上一期 - 无法存储非英文字符:
How to store non-english characters?
使用UTF8修复了这个问题。但今天意识到像♥☆
这样的符号没有正确存储。它们会转换为♥☆
等字符。
如何解决这个问题?
答案 0 :(得分:12)
在我看来,他们正确地存储了,但是当你把它们读出来时,你并没有正确地解释它们。 ♥
和☆
将以UTF-8编码的多字节字符结尾。我敢打赌,如果你查看多字节编码,你会发现它分别与♥
和☆
的单字节编码相同。
编辑:添加详细信息。
正如您在下表中所看到的,将UTF-8字符解释为将它们编码为Windows Latin-1,就可以得到您所看到的结果。
UTF-8 character Hex
♥ e2 99 a5
☆ e2 98 86
Windows Latin-1 Hex
â e2
™ 99
¥ a5
˜ 98
† 86
答案 1 :(得分:2)
UTF8是否在整个范围内使用一致(MySQL,PHP,Apache,< meta> s,header ..)?
对我来说,这开箱即用:
$query = "update tbl set col = '♥☆' where id = 1";
mysql_query($query) or die(mysql_error());
$query = "select col from tbl where id = 1";
$res = mysql_query($query) or die(mysql_error());
print_r(mysql_fetch_row($res));
调试输出:
Content-type: text/html; charset=utf-8
Array
(
[0] => ♥☆
)