如何使用php从utf-8编码的数据库字段中获取编码为“ō”的字符的字形?

时间:2010-04-22 03:55:09

标签: php encoding utf-8 cjk

我有一个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

2 个答案:

答案 0 :(得分:1)

UTF-8是multibyte encoding。因此,如果您通过单字节编码(如Latin-1)查看它,您会看到与您所看到的结果非常相似的内容。将文档编码设置为UTF-8以查看实际字符。

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

答案 1 :(得分:0)

我建议您仔细阅读此页:Unicode for the working PHP programmer。它不会很长,它应该让你超越驼峰,进入自信的Unicode和UTF-8。

一旦您对这些内容感到满意,请查看mbstringintl PHP扩展,这非常方便。并且知道PHP中的哪些字符串函数在多字节字符串上使用是不安全的。当我将网站转换为UTF-8时,这是the notes I made,其中包含一系列顽皮的字符串函数。