2010-06-24 63 views
0

我正在使用Last.fm API来获取艺术家的一些信息。我将信息保存在数据库中,然后显示在我的网页上。 但“(双引号)等字符显示为”。HTML页面上的奇怪字符

例艺术家信息http://www.last.fm/music/David+Penn

和我得到了第一线“从马德里 - 西班牙制片人,编曲,DJ和音乐人。他有自己的唱片公司€œZenRecordsâ€和”。

我的Db是UTF-8,但我不知道为什么这个错误还在。

回答

1

你应该一直使用UTF-8。检查:

  1. 您与数据库的连接是UTF-8(使用mysql_set_charset);

  2. 您输出的页面被标记为UTF-8(<meta http-equiv="Content-Type" content="text/html;charset=utf-8">);

  3. 当您从数据库输出字符串时,您使用htmlspecialchars()而不是htmlentities()对它们进行HTML编码。

htmlentities HTML编码的所有非ASCII字符,并默认假设你通过它在ISO 8859字节。所以如果你通过编码为UTF-8(字节0xE2,0x80,0x9C)的,你会得到&acirc;&#128;&#156;,而不是预期的&ldquo;&#8220;。这可以通过传入utf-8作为可选的$charset参数来解决。

但是,通常使用htmlspecialchars()代替HTML实体引用,因为这样会将非ASCII字符单独留作原始字节。这会导致较小的页面输出,所以最好只要你确定你正在生成的HTML会保留它的字符集信息(除了在邮件中发送HTML代码片段之类的情况之外,你通常可以依赖这些信息) )。

htmlspecialchars()确实有一个可选的参数$charset过,但因为这使得在默认的ISO-8859-1字符集的行为的变化可能会导致其设置为utf-8并不重要。如果你正在用Shift-JIS这样的老式多字节编码产生输出,你不必担心正确设置这个参数,但是今天这很少见,因为大多数理智的人优先使用UTF-8。

2

这似乎是一个字符编码错误。确认您正在以正确的编码阅读网页,并以正确的编码显示结果。

+0

我应该使用什么编码? – Arshdeep 2010-06-24 15:44:32