6

POST データを取得し、SQL クエリを取得して結果を出力する単純な PHP ページを作成しました。mysql_fetch_array 関数を使用しています。

コードはうまく機能しますが、応答は非 Unicode テキストであり、次のようなものを返します。

?????ABC?????

データベース照合は UTF8 であり、格納されたデータは phpMyAdmin で正しく表示されることに注意してください。PHPページでこのMETAタグを使用しましたが、結果は同じです:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

何か案が?!

4

3 に答える 3

16

最初のクエリの前に次のコード行を追加します。

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET SESSION collation_connection = 'utf8_unicode_ci'");

または、mysql 構成を編集して、デフォルトで utf8 を使用することもできます。必要事項はこちらをご確認ください。

my.cnf で MySQL のデフォルト文字セットを UTF-8 に変更しますか?

アップデート

この関数mysql_queryは非推奨であるため、mysqliオブジェクトは次のように使用できます。

$mysqli = new mysqli("localhost", "MYSQL_USER", "MYSQL_PASS", "MYSQL_DB");

$mysqli->query("SET NAMES 'utf8'"); 
$mysqli->query("SET CHARACTER SET utf8");  
$mysqli->query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 
于 2012-08-13T18:02:01.657 に答える
5
mysql_set_charset('utf8', $link);

$link は mysql_connect で作成された接続です

于 2012-08-13T17:45:13.123 に答える
-1

mb_internal_encoding("UTF-8");を使用してみてください。詳しくはhttp://php.net/manual/en/function.mb-internal-encoding.php

于 2012-08-13T17:27:06.003 に答える