我正在使用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编码,页面在头部声明为utf-8:
<meta charset="utf-8">
然而,数据库中的文本“This is atestmessageäüöß”显示为“This is a testmessage ”。当我将变音符号直接写入PHP文件的HTML或直接回显变形金刚时,它们会正确显示,所以我认为编码错误必须介于数据库和PHP服务器之间。
我忽略了哪些因素可能会破坏编码,或者我可以尝试找出问题究竟在哪里?
答案 0 :(得分:3)
PHPMyAdmin仅告诉您自己的连接字符集,而不是数据库与应用程序之间的连接。尝试运行查询
SET NAMES utf8
你建立连接后