-4

プレーン テキストのキリル文字 (例: Широка поляна) を含む MySQL フィールドがあります。照合はutf8_general_ci.

このコンテンツを MySQL クエリで引き出して、php で出力しようとすると、常に ???? が表示されます。シンボル。HTML エンコーディングは utf8、ドキュメント エンコーディングは utf8 でmb_detect_encoding()、文字列の ASCII を表示しますが、PHP/MySQL 変換関数のいずれもそれを読み取り可能なものに変換しません。

4

4 に答える 4

3

古い mysql ドライバーの場合、次のようにする必要があります。

mysql_set_charset('utf8');

mysqli用

$mysqli->set_charset('utf8');

PDO の場合、DSN でエンコーディングを設定する必要があります。

$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
于 2013-08-09T11:49:25.393 に答える
0

接続エンコーディングを設定しないことで、非常によくある間違いを犯す可能性があります。通常はmy.ini構成ファイルで行われますが、コードで常にこれを強制する方が良い方法です。これを行うには、次のクエリを実行するだけです。

SET NAMES encoding;

つまり、utf8 の場合は次のようになります。

SET NAMES utf8;

これは、データベースに接続した直後に行い、接続ごとに 1 回行います。

于 2013-08-09T10:43:25.290 に答える
0

データベース接続の文字セットを設定する必要があります。このため、mysql_set_charset 関数を使用できます。

mysql_set_charset('utf8',$link1); 

詳細: http://php.net/mysql_set_charset

于 2013-08-09T10:45:36.707 に答える
0

PHPファイルの最初の行で使用

 header('Content-Type: text/html; charset=utf-8');
于 2013-08-09T10:55:05.403 に答える