-2

UnicodeテキストلاہورをMySQLに保存していますが、テーブルと列をutf8_general_ciに設定しています。テキストلاہورはMySQLで正しく表示されています。ただし、PHPでそれをエコーすると??????、ブラウザウィンドウに表示されます。

ここで言及すべきことの1つは、ドキュメント全体がUnicodeであり、すべての単語が正しく表示されていることですが、それらは直接記述されています。つまり、MySQLからのものではありません。

やってみても

$p="لاہور";
echo $p;

ブラウザに表示されますلاہور。MySQLから取得する場合にのみ問題が発生します。

4

3 に答える 3

1

メタタグを使用してコンテンツタイプを設定するだけでは必ずしも十分ではない場合があります。通常、以下のヘッダーディレクティブを使用して設定します。

header('Content-Type: text/html; charset=utf-8');
于 2012-11-26T19:06:32.177 に答える
1

これの一般的な原因の1つは、PHPスクリプトが別の形式(ASCIIなど)で保存されていることです。PHPスクリプトもUTF-8またはデータベースで使用するコード化として保存されていることを確認する必要があります。

もう1つの考えられる原因は、MySQLがスクリプトに適切なUnicode文字を返さないことmysql_query("SET NAMES utf8")です。クエリを処理する前に、使用するエンコードまたは使用するエンコードを使用できます。この問題をトラブルシューティングする良い方法は、文字列をそれぞれのUnicodeコードに変換することです。それらを比較して、それらが同じであるかどうかを確認します。

于 2012-11-26T18:55:57.547 に答える
1

ほとんどの場合、MySQL接続(ストレージではなく)がUTF-8に設定されていないため、MySQLから取得したUTF-8データがLatin1(または同様のもの)に変換され、これらの文字を表すことができず、?

使用している場合mysql_

mysql_set_charset( 'utf8' );

使用している場合mysqli_

$mysqli->set_charset( 'utf8' );

クエリを実行する前に

を使用している場合は、接続文字列PDOに追加します。charset=utf8

于 2012-11-27T00:06:39.767 に答える