为什么PhpMyAdmin似乎打破了我的角色编码?

时间:2012-08-31 00:05:14

标签: mysql utf-8 character-encoding phpmyadmin

我写了一个简短的脚本,它只是将Unicode字符插入MySQL数据库。它看起来像这样:

mysql_connect('localhost', 'root', '*') or die(mysql_error());
mysql_select_db('test') or die(mysql_error());
mysql_query("INSERT INTO thetable (thefield) VALUES ('äöüß')") or die(mysql_error());

我使用Notepad ++生成了脚本,它的UTF-8编码没有BOM。

数据库和表格具有utf8_general_ci个排序规则。当我使用PhpMyAdmin查看数据时,charset似乎被打破了。字符显示不正确:

  

äöüß

当我在脚本中收到数据时,charset似乎没问题。我用正确的标题(header('Content-Type: text/html; charset=utf-8'))抛弃它,一切看起来都正确。

当我再次使用PhpMyAdmin将数据插入表中时,它会在PhpMyAdmin中正确显示,但是只要我从我的演示脚本中转储它,就会再次破坏字符集。

我不知道原因是什么。数据库的字符集,HTTP标头和脚本的编码是一致的,我不怀疑PhpMyAdmin是否正常工作。那么我还能在哪里找到问题呢?

1 个答案:

答案 0 :(得分:0)

您在原始文件中为每个字符获取2个字符,因此将其读取为标准ASCII而不是unicode。您可能需要指定连接时MySQL连接使用的字符集。

我在我的手机上,但是如果你发布了你的数据库连接代码,我可以告诉你我什么时候去电脑

修改 - 请参阅PHP PDO: charset, set names?