2

我有一个排序规则为“utf8_general_ci”的 MySQL 数据库表,该字段中的值为:

x & #299; bán yá wén(没有空格)。

当它被转换时(例如通过 StackOverflow 的编辑器),它看起来像这样:

西班亚文

其中第二个字符看起来像一个小写 i,顶部有一个条形。

在 PHP 中,什么函数可以转换 & #299 ; 实体变成ī字?

我试过使用 html_entity_decode($str,ENT_COMPAT,'UTF-8'),但是我得到如下字符:

yÄ«n wén 或 zhÅ•ng wén

我很确定我对解码有些不理解,这就是我使用错误功能的原因。谁能阐明如何获得由实体 & #299 和 255 以上的类似高数字字符表示的单个字符字形?

非常感谢,AE

4

2 回答 2

1

UTF-8 是一种多字节编码。因此,如果您通过诸如 Latin-1 之类的单字节编码来查看它,您会看到与您所看到的结果非常相似的东西。将文档编码设置为 UTF-8 以查看实际字符。

至于您的第一个问题,实际上是浏览器在解码字符引用并打印字符,而不是 PHP。

于 2010-04-22T04:03:14.980 回答
0

我建议你通读这个页面:Unicode for the working PHP 程序员。时间不长,它应该会让你克服困难,进入自信的 Unicode 和 UTF-8。

一旦你对这些东西没问题,检查mbstringintl PHP 扩展,它们非常方便。并且知道 PHP 中哪些字符串函数在多字节字符串上使用是安全的,哪些是不安全的。这是我在将站点转换为 UTF-8 时所做的笔记,其中包括一个顽皮的字符串函数列表。

于 2010-04-23T13:50:41.603 回答