2010-06-24 85 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