我使用Last.fm API获取艺术家的一些信息。我在数据库中保存信息,然后显示在我的网页上。 但是像“(双引号)这样的字符显示为”。
示例艺术家信息http://www.last.fm/music/David+Penn
我获得了第一线作为“马德里 - 西班牙的制片人,编曲家,DJ和音乐家。他有自己的唱片公司”Zen Records“和”。
Mine Db是UTF-8,但我不知道为什么这个错误仍然存在。
答案 0 :(得分:2)
这似乎是一个字符编码错误。确认您正在以正确的编码方式阅读网页,并以正确的编码显示结果。
答案 1 :(得分:1)
你应该一直使用UTF-8。检查:
您与数据库的连接是UTF-8(使用mysql_set_charset
);
您输出的网页标记为UTF-8(<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
);
从数据库输出字符串时,使用htmlspecialchars()
而非htmlentities()
对其进行HTML编码。
htmlentities
对所有非ASCII字符进行HTML编码,默认情况下假设您在ISO-8859-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。