首先,確保你的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>
那麼它應該工作。
編輯:我故意沒有談整理,因爲我認爲它已經被考慮,但每個人的利益,讓我多些添加到這個答案。
幽州,
我有字符集設置爲UTF-8 ...在MySQL表中的排序規則。
表格歸類與charset不是一回事。
整理是自動嘗試將一個字符集轉換爲另一個字符集的行爲用於查詢的目的。例如,如果你有一個latin1字符集和一個UTF-8排序規則,並且你做了一些類似於SELECT * FROM foo的WHERE bar LIKE'% - %'; (UTF-8 U + 2014)放在一張latin1字符集的表格上,該字符集匹配L + 0151 或 U + 2014。
並非如此巧合......如果你是輸出這個LATIN1編碼的字符到UTF-8編碼的網頁,你會得到如下:
這是一個“testâ€。
這似乎是你的問題的輸出,確切地說。下面是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 |
+--------------------+-----------------+
感謝upvotes ;-)
不要吝嗇,因爲我非常感謝您的高度聰明的迴應,西奧多 - 您在過去一些PHP OOP問題上幫助我解決了問題。然而,爲了迴應 - 在那裏,做到了。我已經在我的帖子中提到過。請注意,大多數其他UTF-8的東西已經工作。這只是表現時髦的巧妙語錄。 – Volomike
我真的沒有看到你說過你試過以上的地方。我已經重讀了它,仍然無法看到你提到的這個地方; /我向你展示了什麼是常見的問題。第三步是檢查你的輸入字符。但我想你已經想到了那個。猜猜我錯了。 –
「當我嘗試將歐元和英鎊寫入數據庫時,角色經歷的很好,因爲我在包含頁面HTML,richtext控件IFRAME HTML和MySQL表格整理中將字符集設置爲UTF-8在這方面一切都很好。「 – Volomike