[英]Stored non-English characters, got '?????' - MySQL Character Set issue
我正在工作的網站位於波斯語,所有文本均顯示為?????。 (問號)。 我將數據庫表的排序規則更改為UTF8_general_ci,但仍顯示???
我運行以下腳本來更改所有表,但是效果不佳。
我想知道我在做什么錯
<?php
// your connection
mysql_connect("mysql.ord1-1.websitesettings.com","user_name","pass");
mysql_select_db("895923_masihiat");
// convert code
$res = mysql_query("SHOW TABLES");
while ($row = mysql_fetch_array($res))
{
foreach ($row as $key => $table)
{
mysql_query("ALTER TABLE " . $table . " CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci");
echo $key . " => " . $table . " CONVERTED<br />";
}
}
?>
壞消息。 但首先,請仔細檢查:
SELECT col, HEX(col)...
查看表格中的內容。 如果十六進制顯示3F
,則數據消失。 正確保存,對dal
角色應該是十六進制D8AF
; hah
是十六進制D8AD
。
發生了什么:
SET NAMES latin1
生效(默認,但錯誤) CHARACTER SET latin1
(默認值,但錯誤) 當你INSERTed
的數據,它被轉換為latin1,它不具有值波斯語字符,所以問號代替他們。
解決方法(針對將來的“ INSERT”):
CHARACTER SET utf8
<meta...utf8>
應該在頂部附近。 上面的討論是關於CHARACTER SET
,字符的編碼。 現在獲取COLLATION
的技巧,該技巧用於比較和排序。
如果希望將它們等同對待:'بِسْمِ'='بسم',則將utf8_unicode_ci(而不是utf8_general_ci)用於COLLATION
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.