2011-01-19 6 views
7

PHP를 사용하여 MySQL 데이터베이스에 연결하여 XML 파일을 만듭니다. 문자 인코딩을 제외한 모든 것이 작동합니다. 일본어와 영어 문자가 모두 필요하므로 분명히 UTF-8을 사용하기로했습니다. 문제는 데이터베이스의 일본어 문자가 올바르게 표시되지 않는다는 것입니다.PHP와 MySQL을 사용하여 일본어 문자를 표시 할 때의 문제

MySQL 연결 정렬과 마찬가지로 데이터베이스와 테이블의 데이터 정렬이 UTF8_general_ci로 설정됩니다.

내 PHP 파일은 BOM없이 UTF-8로 저장되며 다음 두 줄의 머리글에 한 번씩 다른 위치에 저장됩니다. header ("Content-type : text/xml; charset = utf-8 "); 다른 곳에서는 XML 출력 파일에 있습니다.

필자는 PHP 파일에서 코드 내에서 일부 일본어 문자를 작성 했으므로 데이터베이스에서 가져 오지 않았습니다. 이것은 올바르게 표시됩니다 (여기에서 볼 수 있습니다 http://jlearn.0sites.net/Flash/xml/xml.php ... 마지막 5 개 항목에는 일본어로 된 일본어가 있기 때문에 데이터베이스에서 오는 일본어로 인해).

그래서 문제는 데이터베이스 가능성이 있지만 모든 것이 나에게 맞습니다.

아이디어가 있으십니까?

답변

12

사실 그냥이 게시 - 나는 많은이 해결할 수있는 문제의 물건을 찾는 경향이 무엇 php mysql query encoding problem


을;

mysql_query("SET NAMES 'utf8'"); 

쿼리를 수행하기 전에.

설명서에 mysql_set_charset을 사용하는 것이 좋지만 그 기능이 누락 된 경우가 종종 있습니다.

if(function_exists('mysql_set_charset')){ 
    mysql_set_charset('utf8', $db_con); 
}else{ 
    mysql_query("SET NAMES 'utf8'", $db_con); 
} 
+0

감사를 들면, 훌륭하게 일을 작동하는 솔루션입니다. 나는 약 3 시간 동안 그 일을 해왔다. – Musera

+0

도와주세요! –

0

당신은 DB 접근에 대한 객체를 사용하는 경우, 다음 날 여기

class DB 
{ 
    public $Link; 
    private static $_instance; 

    public static function instance() 
    { 
     if (NULL === self::$_instance) { 
      self::$_instance = new DB; 
     } 
     return self::$_instance; 
    } 

    private function __construct() 
    { 
     $host = 'localhost'; 
     $user = 'your_user_name'; 
     $pass = 'your_password; 
     $db = 'db_name'; 
     $this->Link = new mysqli($host, $user, $pass, $db); 
     $this->Link->set_charset('utf8'); 
    } 
} 
관련 문제