2009-08-13 12 views
2

私はウェブサイトを改造して、今はxhtmlなどの有効なUTF8を使用しています。すべてうまくいきますが、データベース内のどこかがユーロ文字の場合は疑問符として表示されます。€charは? UTF8出力で

これを修正する正しい方法は何でしょうか? Typo3によって出力が行われるので、それについてはほとんど変わりません。これは、場合により、間違ったデータベース接続のエンコーディングに

検索SET NAMES SQL文

$db_link = mysql_connect($host,$user,$passwd); 
    mysql_query("SET CHARACTER SET 'utf8';", $db_link); 
    mysql_query("SET NAMES 'utf8';", $db_link); 
+0

これは、ユーロ記号やその他の文字(例: ω(小さなオメガ、utf8:0xCF 0x89)も? – VolkerK

答えて

5

することは、これらのクエリを実行し、データをフェッチ前にクエリをお試しくださいあなたは正しい文字データ(0x20AC)を持っていると確信しています。また、クライアント上のフォントでもかまいません-側。使用しているフォントがその特定の文字を処理しない場合は、デフォルトの疑問符が表示されます。

しかし、あなたを与えるエスケープコード€、使用しない理由:€

乾杯、

+1

php/mysql拡張(mysql_connect、mysql_query、...)とPHP 5> = 5.2.3を使用している場合は、mysql_set_charset()を使用してください。そうしないと、mysql_real_escape_string()はエンコーディングの変更を "認識"しません。 http://php.net/mysql_set_charsetを参照してください。 – VolkerK

0

かもしれません

SET NAMES utf8 
SET CHARACTER SET utf8 
0

をあなたは

$value = iconv('ISO-8859-1', 'UTF-8//TRANSLIT', $value); 

"ISO-8859-1" の部分のような何かを試みることができますあなたのMySQLテーブル文字エンコーディングによって異なるかもしれません。

2

両方のステートメントを発行しないでください!

が次々

SET NAMES utf8 
SET CHARACTER SET utf8 

1を発行しないでください。トラブルを引き起こす可能性があります。 SET NAMES utf8の直後に、私はすでにSET CHARACTER SET utf8の経験がありませんでした。要するにhttp://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

:私だけSET NAMES ...

MySQLのドキュメントを発行することをお勧めします

は説明する理由を持っているクライアントと同じに接続の文字セットを設定ANS文字セットを結果SET NAMES ...SET CHARACTER NAME...は異なる接続の文字セットと照合順序を設定します。

ドックを読んで、あなたのケースでより良い方を選んでください。あるいは、より良いテストをする。

2

ユーロ記号を含むデータベース列には、どのような文字セット(エンコーディング、照合、...)を使用していますか?

UTF-8文字エンコーディングを使用していない場合、€記号が何らかの難しさの獣であるため、この列に格納されているデータが混在している可能性があります。問題は、ユーロ記号がISO-8859-15を使用する場合は\xA4、Windows-1252(Windowsマシンの場合は一般的な西ヨーロッパの文字セット)を使用する場合は\x80とエンコードされるという問題です。 カラム内のデータが正しくエンコードされていない場合、SET NAMES utf8を使用しても、MySQLはUTF-8に正しくトランスコードすることができません。

関連する問題