1

我知道有很多这样的问题,但我正在创建新的问题,因为在我看来,它是针对每种情况的。

因此,我的页面以UTF-8格式显示。数据取自具有utf8_unicode_ci collation. 我显示的数据是字符串 - 1  Bröllops-Festkläder

这里有一些 unicode 字符,它们应该可以正常显示,但不能。在我的页面上,这些只是一堆象形文字。

现在,有趣的情况:

我正在使用 phpMyAdmin 来跟踪数据库中发生的事情。该网站能够导入包含客户数据的 CSV 文档并单独修改每个客户。如果我导入包含这些字符的 CSV 文档,它们将被写入数据库,在 phpMyAdmin 中可读,而在我的页面上不可读。如果我使用我的脚本来修改客户信息并从浏览器中键入这些字符,反之亦然——它们在页面上是可读的,而在 phpMyAdmin 中是不可读的,所以很明显编码是不同的。我花了很长时间找出正确的组合,但我做不到。

更新:Deceze 在下面发布了一个链接,我在这里复制它以使其更加引人注目。我相信这将为许多面临类似问题的人节省数小时和数天 -在 Web 应用程序中从前到后处理 Unicode

4

1 回答 1

3

这里涉及到几件事。如果您的数据库编码很好并且 html 编码很好并且您仍然看到人工制品,那么您的数据库连接很可能没有使用相同的编码,从而导致数据损坏。如果您手动连接,您可以轻松地强制执行 utf 编码,方法是在您访问数据库SET NAMES UTF8之后将查询作为第一件事。connect()每个连接只执行一次就足够了。

编辑:一个重要的注意事项 - 根据您将数据放入数据库的方式,您的数据库内容可能需要修复,因为如果您通过断开的连接放置它可能会损坏。所以,如果有人遇到同样的问题——一旦你设置好所有东西,确保你检查的是的数据集,否则你可能仍然看到不正确的东西,即使现在一切都很好。

于 2012-08-27T15:04:43.770 回答