我有一个MySQL数据库表,其排序规则为'utf8_general_ci',字段中的值为:
x& #299; bányáwén(没有空格)。
当转换它时(例如通过StackOverflow的编辑器),它看起来像这样:
xībányáwén
其中第二个字符看起来像小写字母i,顶部有一个条形。
在PHP中,什么功能可以转换& #299;实体进入ī字符?
我尝试过使用html_entity_decode($ str,ENT_COMPAT,'UTF-8'),但是我得到的字符如下:
y?nnwén或zhÅ•ngwén
我很确定我对解码有什么不了解,这就是我使用错误功能的原因。任何人都可以了解如何获得由实体和实体代表的单字符字形。 #299和类似的高数字字符超过255?
非常感谢, AE
答案 0 :(得分:1)
UTF-8是multibyte encoding。因此,如果您通过单字节编码(如Latin-1)查看它,您会看到与您所看到的结果非常相似的内容。将文档编码设置为UTF-8以查看实际字符。
至于你的第一个问题,它实际上是解码字符引用并打印字符的浏览器,而不是PHP。
答案 1 :(得分:0)
我建议您仔细阅读此页:Unicode for the working PHP programmer。它不会很长,它应该让你超越驼峰,进入自信的Unicode和UTF-8。
一旦您对这些内容感到满意,请查看mbstring和intl PHP扩展,这非常方便。并且知道PHP中的哪些字符串函数在多字节字符串上使用是不安全的。当我将网站转换为UTF-8时,这是the notes I made,其中包含一系列顽皮的字符串函数。