【发布时间】:2013-05-17 23:21:43
【问题描述】:
我正在使用 MySQL 数据库来存储一些包含德语变音符号 (äüö) 的字符串。表“testtable”和列“text”是utf8_bin整理的,PHPMyAdmin告诉我“MySQL连接”也是utf8_bin。
然后我使用 PHP 脚本读取字符串并显示它们:
$sql = "SELECT `text` FROM `testtable` WHERE `id`=$id";
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, false);
mysql_select_db(MYSQL_DATABASE,$db);
$result = mysql_query($sql,$db);
if (!$result or mysql_errno()) die("Something was wrong with the query: $sql");
$rows = array();
while(($rows[] = mysql_fetch_assoc($result)) || array_pop($rows));
foreach ($rows as $r) {echo $r['text']}
文件本身按照我的编辑器编码为utf-8,页面在head中声明为utf-8:
<meta charset="utf-8">
然而,数据库中的文本“This is a testmessage äüöß”显示为“This is a testmessage ����”。当我直接将变音符号写入PHP文件的HTML,或者直接回显变音符号时,它们都可以正确显示,所以我认为编码错误一定是在数据库和PHP服务器之间的某个地方。
我忽略了哪些因素可能会破坏此处的编码,或者我可以尝试找出问题的确切位置?
【问题讨论】:
-
如果您还没有kunststube.net/frontback,建议您阅读本文
-
哈哈,刚看了他关于编码的文章,很有启发性。接下来我会读这个:)
标签: php mysql utf-8 character-encoding diacritics