我正在使用Last.fm应用程序接口来获取艺术家的一些信息,.I保存在数据库中的信息,然后显示在我的网页上。但是像“(双引号)这样的字符显示为- likeœ。
艺术家信息http://www.last.fm/music/David+Penn示例
我的第一句台词是“西班牙马德里的制作人、编曲、dj和音乐家,他有自己的唱片公司--œZen唱片公司,”。
我的数据库是UTF-8,但我不知道为什么这个错误还会出现。
发布于 2010-06-25 00:05:14
您应该一直使用UTF-8。检查一下:
与数据库的连接是UTF-8 (使用mysql_set_charset
);
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
);
htmlspecialchars()
而不是htmlentities()
.对其进行编码
ASCII对所有非htmlentities
字符进行编码,默认情况下假定您向其传递的是ISO8859-1中的字节。因此,如果您传递以UTF-8 (字节0xE2、0x80、0x9C)编码的“
,您将得到“
,而不是预期的“
或“
。这可以通过将utf-8
作为可选的$charset
参数传入来解决。
然而,通常只使用htmlspecialchars()
会更容易,因为这会留下非ASCII码字符作为原始字节,而不是HTML实体引用。这会导致较小的页面输出,所以只要您确定所生成的HTML将保留其字符集信息(您通常可以依赖这些信息,除非在诸如在邮件中发送HTML片断之类的上下文中),则更可取。
htmlspecialchars()
也有一个可选的$charset
参数,但将其设置为utf-8
并不重要,因为这不会导致默认的ISO-8859-1字符集的行为发生变化。如果您使用老式的多字节编码(如Shift-JIS )生成输出,则必须担心如何正确设置此参数,但现在这种情况非常少见,因为大多数理智的人都优先使用UTF-8。
发布于 2010-06-24 23:08:11
这似乎是一个字符编码错误。确认您正在以正确的编码读取网页,并以正确的编码显示结果。
https://stackoverflow.com/questions/3111215
复制相似问题