2011-01-19 6 views
7

私はMySQLデータベースに接続しているPHPを使用してXMLファイルを作成しています。文字エンコーディング以外はすべて動作しています。私は日本語と英語の両方の文字が必要なので、明らかに私はUTF-8を使うことにしました。問題は、データベースの日本語文字が正しく表示されないことです。PHPとMySQLを使用して日本語の文字を表示する際の問題

データベースとテーブルの照合順序は、MySQL接続照合と同様にUTF8_general_ciに設定されています。

私のPHPファイルでは、次の行のヘッダーに1度、2つの異なる場所にUTF-8を使用するように定義されています(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を使用することをお勧めしますが、その機能が不足していることがよくあります。あなたがDBアクセスのためのオブジェクトを使用している場合

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

、そしてここで私の作品解決策だ

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'); 
    } 
} 
関連する問題