php + mysql 웹 페이지 한글 깨짐 현상 처리
웹에서 한글 깨짐 현상이 발생 할때.
소스에서 수정하기
1. 인코딩 방식을 통일 : 코딩 페이지 UTF-8로 변경
2. iconv() 사용 : iconv("현재 인코딩", "바꿀 인코딩", 바꿀 스티링)
$emp = iconv('uft8', 'euckr', $str );
3. mysql 입출력 인코딩 지정 ( 나의 경우 정답~~!!)
php.ini 나 my.cnf 에서 수정을 하면 될 수 있을 것 같은데.
귀찮아서 다음과 같이 session char_set_ 명령을 실행하는 걸로 마무리 한다.
<?php // query.php
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if(!$db_server) die ("Unable to connect to MySQL :" . mysql_error());
mysql_select_db($db_database) or die("Unable to select Database : " . mysql_error());
mysql_query("set session character_set_connection=utf8;");
mysql_query("set session character_set_results=utf8;");
mysql_query("set session character_set_client=utf8;");
$query = "SELECT * FROM temptest" ;
$result = mysql_query($query) ;
if(!$result ) die ( "Database access failed : " . mysql_error());
$rows = (mysql_num_rows($result));
for($j = 0 ; $j < 5 ; ++$j){
$temp = mysql_result($result, $j, 't2');
print("$temp <br>");
}
참고:
php mysql의 한글 깨짐 문제 해결 (MySQL DB관점에서 해결)
Change MySQL default character set to UTF-8 in my.cnf
서버에서 설정하기
역시, php.ini와 my.cnf 설정만 수정하면 utf-8 한글 깨짐 문제는 해결 되었다.
php.ini 기본 문자셋 설정 (/etc/php.ini)
;default_charset = "iso-8859-1"
default_charset = "utf-8"
my.cnf 기본 문자셋 설정 ( /etc/my.cnf )
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# utf-8 setting (djlee)
default-character-set=utf8
default-collation=utf8-general_ci
init_connect=set collation_connection=utf8_general_ci
init_connect=set names utf8
character-set-server=utf8
collation-server=utf8_general_ci
character-set-client-handshake=TRUE
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid