我编写了一个简短的脚本,它只是将 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 查看数据时,字符集似乎被破坏了。字符显示不正确:
äöüß
当我在脚本中收到数据时,字符集似乎没问题。我用正确的标题 ( header('Content-Type: text/html; charset=utf-8')
) 倾倒了它,一切看起来都正确。
当我再次使用 PhpMyAdmin 将数据插入表中时,它会在 PhpMyAdmin 中正确显示,但是一旦我从演示脚本中转储它,字符集就会再次被破坏。
我不知道可能是什么原因。数据库的字符集、HTTP 标头和脚本的编码是一致的,我不怀疑 PhpMyAdmin 工作正常。那么我还能在哪里寻找问题呢?