1

我编写了一个简短的脚本,它只是将 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 工作正常。那么我还能在哪里寻找问题呢?

4

1 回答 1

0

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

我在我的手机上,但是如果你发布你的数据库连接代码,我可以告诉你当我到达电脑时如何

编辑 - 见PHP PDO: charset, set names?

于 2012-08-31T00:23:38.267 回答