まず、MySQL テーブルがエンコードとして UTF-8 を使用していることを確認してください。その場合、次のようになります。
mysql> SHOW CREATE TABLE Users (
...
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 |
次に、HTML ページが UTF-8 を表示するように設定されていることを確認します。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</head>
....
</html>
その後、動作するはずです。
編集:すでに検討されていると思ったので、意図的に照合については話しませんでしたが、すべての人のために、この回答にさらに追加させてください。
あなたは次のように述べています。
MySQLテーブルの照合で文字セットをUTF-8に設定しています...。
テーブル照合は文字セットと同じではありません。
照合は、クエリの目的で、ある文字セットを別の文字セットに自動的に変換しようとする行為です。たとえば、latin1 の文字セットと UTF-8 の照合があり、SELECT * FROM foo WHERE bar LIKE '%—%'; のようなことをするとします。L+0151またはU+2014のいずれかに一致する latin1 の文字セットを持つテーブルの (UTF-8 U+2014) 。
偶然ではありません...このlatin1でエンコードされた文字をUTF-8でエンコードされたWebページに出力すると、次のようになります:
これは「テスト」です。
それはまさにあなたの問題の出力のようです。これを複製する HTML は次のとおりです。
<?php
$string = "This is a “test”.";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf8"/>
</head>
<body>
<p><?php echo $string; ?></p>
</body>
</html>
このファイルを必ず latin1 で保存してください...
テーブルに設定されている文字セットを確認するには、次のクエリを実行します。
SELECT CCSA.character_set_name, TABLE_COLLATION FROM information_schema.`TABLES` T,
information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = "database"
AND T.table_name = "table";
(英語以外の複数の言語を使用している場合を除き) 使用するための唯一の適切な結果は次のとおりです。
+--------------------+-----------------+
| character_set_name | TABLE_COLLATION |
+--------------------+-----------------+
| utf8 | utf8_general_ci |
+--------------------+-----------------+
賛成票をありがとう;-)