MySQL データベースに保存されている製品情報を出力しようとしていますが、ダイヤモンドの中にクエスチョン マークが入っているような奇妙な文字が出力されます。
エンコーディング/UTF8の問題かもしれないと思いますが、必要なエンコーディングを指定しました:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
これは正しいですか?何を確認すればよいですか?
データベースからのデータのみに奇妙な文字が含まれている場合は、次を使用して、MySQL 接続も UTF8 であることを確認してください。
mysql_query("SET NAMES UTF8");
他のクエリの前に。それ以外の場合、文字が「手書き」ファイルにも表示される場合は、ファイルがエディターで UTF-8 として保存されていることを確認してください。PHP を使用して charset ヘッダーを設定することもできます。
header('Content-type: text/html; charset=UTF-8');
また、クエリを実行しているテーブル内のすべてのフィールドが、UTF-8 バリアントとして設定されていることを確認してくださいutf8_general_ci
。
結果をutf8にしたいと思います
SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'
4 つのポイントすべてに従えば、壊れたエンコーディングで問題が発生することはありません。
前回その問題が発生したとき、解決策はタトゥ・ウルマネンが言ったことと似ていましたが、少し異なりました...
彼の解決策がうまくいかない場合は、交換してみてください
mysql_query("SET NAMES UTF8");
と
mysql_query("SET NAMES latin1");
これは、MySql のデフォルトの文字セットが latin1 であり、ほとんどの場合に使用されるためです....
それが役立つことを願っています...
Tatuの言うことを第二に。
これは、エンコーディングに関する優れた背景資料です。すべてのソフトウェア開発者が絶対に、積極的に Unicode と文字セットについて知っておく必要がある絶対的な最小値 (言い訳はありません!)