我有一个包含utf8_unicode_ci字符串的数据库。一些例子是“Zìzhìqū”和“Shěng”。
当我运行此代码时:
$result = mysql_query ("SELECT foo FROM bar");
$rows = Array ();
while ($row = mysql_fetch_row ($result))
array_push ($rows, $row [0]);
mysql_free_result ($result);
$rows
数组包含“Zìzhìqū”,其中“Shěng”已成为“Sh?ng”。当我将字符串写入文件时,我可以看到流氓问号是普通的ASCII 0x3f。
WTF?
我正在使用PHP 5.3.10-1ubuntu3.4和mysql Ver 14.14 Distrib 5.5.24。知道是什么导致了这个吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
您是否将PHP和MySQL之间的连接的字符编码设置为UTF-8?如果不这样做,将导致?
替换为UTF-8字符。
SET NAMES 'utf8'
答案 2 :(得分:0)
请将您的数据库保存在DEFAULT CHARSET=utf8
和COLLATE=utf8_unicode_ci
然后
header("Content-type: text/html; charset=utf-8");
//mysql connection
mysql_query("SET NAMES utf8");