我写了一个简短的脚本,它只是将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是否正常工作。那么我还能在哪里找到问题呢?
答案 0 :(得分:0)
您在原始文件中为每个字符获取2个字符,因此将其读取为标准ASCII而不是unicode。您可能需要指定连接时MySQL连接使用的字符集。
我在我的手机上,但是如果你发布了你的数据库连接代码,我可以告诉你我什么时候去电脑
修改 - 请参阅PHP PDO: charset, set names?