2011-10-16 56 views
2

有人在電子郵件寄給我的信是這樣如何修復Unicode字母?

IVIØR†€™

正確的應該是

IVIØR†€™

假設是 如何代表他們在原來的葡萄牙人的langauge,之後得到了改變通過HTTP GET請求傳遞。

我可能無法修復該網站..但也許創建一個修復工具來修復這些破碎的編碼字母?或任何人知道任何修復工具?或者如何手工操作?似乎沒有什麼是丟失..只是嚴重解釋

回答

4

這裏發生的事情是,UTF-8被誤解爲ISO-8859-1;然後其他類型的損壞(錯誤的ISO-8859-1字符串被重新編碼爲UTF-8;非破壞性空間字符'\ xA0'被轉換爲常規空間'\ x20')似乎在之後發生,儘管這些可能只是將它粘貼到Stack Overflow的結果。

由於後續的損壞,沒有真正好的方法來完全撤銷它,但是您可以通過將其傳遞給非常嚴格的UTF-8解釋器來撤消它。例如,如果我在計算機上使用「記事本」和「ANSI」(單字節)編碼將「IVI?R」,「?」保存爲文本文件,然後在Firefox中打開它,告訴它將其解釋爲UTF-8(Firefox> Web Developer>字符編碼> Unicode(UTF-8)),然後顯示「IVIØR 」。 (「 」是因爲'\ xA0'已被改爲'\ x20',這打破了UTF-8編碼。)

+0

哇謝謝..任何想法?我如何修復網站以正確地轉換一切? 'html_entities'?或東西 – SSpoke

+0

這是一個網站或電子郵件?該網站應該發送一個標題以及指定UTF-8的數據(但如果不是,則默認爲latin1) - 如果這是一封電子郵件,則基本上是相同的。如果這是一個webmail站點,底層站點「軟件」應該將電子郵件轉換爲與webmail頁面相同的編碼,作爲呈現頁面的一部分,併發送適當的標題。也就是說,我使用了盲目忽略字符編碼的網絡郵件客戶端,特別是在我的學校使用的Emumail會破壞每個UTF-8電子郵件。 – Thanatos

+0

@Thanatos你能幫我解決這個問題嗎? 「巴克」在這一個腐敗?網站有''但它什麼也沒做。 – SSpoke

0

他們可能不會破碎。這只是他們發送的編碼與您正在查看的解碼之間的區別。

找出最初使用的編碼是什麼,並使用相同的編碼來解碼它,它應該看起來像原版的。在編寫「修復」工具方面,您總是需要知道它們最初創建的編碼,根據來源的不同,這些編碼可能會很複雜,以及您是否有權訪問上述信息。

+0

嗯..所以這是他們身邊的瀏覽器故障?問題通過他的次要電子郵件感謝上帝解決,正確的是'IVIØR'''''他說PayPal顯示它錯誤。我該如何解決這個問題?我應該URLEncode在網站上的一切 – SSpoke

+0

答案取決於你使用的語言/框架,它通常涉及一些特定於該框架的研究。在StackOverflow中搜索「字符編碼」+有問題的框架 - 你會看到一些複雜性,一旦你發現它的根源,你也應該有一些答案。這可以更具體。 – jefflunt

+2

有關字符編碼檢測的信息,請參閱以下StackOverflow問題;也許這是你的問題:http://stackoverflow.com/questions/774075/character-encoding-detection-algorithm –