6

MySQL データベースに保存されている製品情報を出力しようとしていますが、ダイヤモンドの中にクエスチョン マークが入っているような奇妙な文字が出力されます。

エンコーディング/UTF8の問題かもしれないと思いますが、必要なエンコーディングを指定しました:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

これは正しいですか?何を確認すればよいですか?

4

4 に答える 4

20

データベースからのデータのみに奇妙な文字が含まれている場合は、次を使用して、MySQL 接続も UTF8 であることを確認してください。

mysql_query("SET NAMES UTF8");

他のクエリの前に。それ以外の場合、文字が「手書き」ファイルにも表示される場合は、ファイルがエディターで UTF-8 として保存されていることを確認してください。PHP を使用して charset ヘッダーを設定することもできます。

header('Content-type: text/html; charset=UTF-8');

また、クエリを実行しているテーブル内のすべてのフィールドが、UTF-8 バリアントとして設定されていることを確認してくださいutf8_general_ci

于 2009-12-15T21:33:12.367 に答える
5

結果をutf8にしたいと思います

  • utf8 エンコードされた php スクリプトを保存します
  • httpヘッダー(またはいくつかのメタタグ)が出力がutf8であることを示していることを確認してください
  • MySql のすべてのテーブルは utf8 にする必要があります
  • 最後になりましたが、クライアントとサーバー間の接続は utf8 である必要があります。(これは、php.ini 設定のどこかで処理するか、データベースに対して次のクエリを作成することで処理できます。SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'

4 つのポイントすべてに従えば、壊れたエンコーディングで問題が発生することはありません。

于 2009-12-15T23:07:58.967 に答える
4

前回その問題が発生したとき、解決策はタトゥ・ウルマネンが言ったことと似ていましたが、少し異なりました...

彼の解決策がうまくいかない場合は、交換してみてください

mysql_query("SET NAMES UTF8");

mysql_query("SET NAMES latin1");

これは、MySql のデフォルトの文字セットが latin1 であり、ほとんどの場合に使用されるためです....

それが役立つことを願っています...

于 2009-12-15T22:19:22.150 に答える
1

Tatuの言うことを第二に。

これは、エンコーディングに関する優れた背景資料です。すべてのソフトウェア開発者が絶対に、積極的に Unicode と文字セットについて知っておく必要がある絶対的な最小値 (言い訳はありません!)

于 2009-12-15T21:33:25.050 に答える