好奇怪喔
ipad2發的 email ,為何別人收是亂碼 ,
怎麼辦呢?
請指教
遇到非Unicode的作業系統或收信軟體就會變成亂碼,
以Outlook Express為例,讀信的時候要按下拉選單
檢視 -> 編碼 -> 其他 -> Unicode (UTF-8)
這樣就會看到正常的內容。
不過,因為Windows繁體中文作業系統還是以Big-5編碼為主,
所以在不變更預設系統語言的狀態下,
閱讀信件時只有信件主旨或內容可以變更編碼來檢視內容。
如果iPad寄出的信件中有以Unicode編碼的中文檔名,
到了繁體中文的Windows作業系統下檔案名稱還是會顯示亂碼,但檔案還是可以正常開啟。
使用Unicode的好處是,全世界的語言都可以同時寫在同一封信件內容中,
缺點是編碼的長度會比較長,信件容量大小會偏大,網路傳輸量就會偏多。
另外就是遇到非Unicode為主的作業系統就會需要手動轉碼比較麻煩。
其實理論上,Outlook之類的收信軟體應該是要能自動依照信頭內容判斷編碼的,
因為信件標頭內容中有個屬性叫做Content-Type,
Unicode信件的鏢頭會註記 Content-Type: text/html; charset=utf-8;
我不知道為什麼Outlook系列的產品偏偏一定要在charset="utf-8";上加上雙引號,
如果少了雙引號,Outlook就會無法判斷信件的編碼,
我覺得是個Bug啦,不過這問題少說已經有十年以上了,我不知道為什麼微軟的工程師這麼久都沒發現。
偏偏Windows作業系統的使用者還是佔多數,
所以就會在非英語系的國家造成經常閱讀到亂碼信件的情形。
因為任何編碼系統的頭255個字都是一樣的,
一般的西語系統都包含在那ASCII的255個字元中,
就算編碼選錯也不會出現亂碼。
我猜那些編寫程式的工程師都是老外,根本不懂中文,
所以就算再多給他50年測試,也不會發現這個Bug。
遇到也只能請對方手動選為Unicode來讀信囉
我記錯了,不是換行字元造成錯誤,而是少了雙引號造成判讀失敗。
證據如下圖所示
這是使用 Outlook Express 特別選擇 Unicode 編碼寄出的信件,
使用 Outlook Express 收到信件可以自動判斷為 Unicode 編碼,不必手動選 Unicode。

這是使用 iPad2 直接寄出的信件,使用 Outlook Express 收信必須手動選 Unicode 才能讀。

看出差異了嗎?
其實唯一的差異只有那個雙引號,所以正解是因為 iPad2 沒有雙引號,
所以造成 Outlook 系列無法判讀
只要請微軟修正一下程式,讓 Outlook 也能接受無雙引號標示的屬性,問題就能解決了
至於到底是有引號才正確還是無引號才正確,我要去翻一下W3C的制定標準
================
W3C.ORG 翻閱結果更新 :
http://www.w3.org/International/questions/qa-html-encoding-declarations#httpheadwhat
iPad2 沒錯,是 Outlook 錯了,
W3C的標準是不用加引號的
不過,為什麼我會以為是 text/html; 與 charset=utf-8 之間的換行字元造成誤判呢?
因為我之前幫業者寫過自動回信系統,當初就遭反應 Unicode 信件亂碼問題,
當時查出來,如果 text/html; 與 charset=utf-8 之間少了換行字元, Outlook 無法判讀編碼,
因為當時寫程式是按照W3C的標準範例,各位可以翻翻W3C有關The HTTP header的敘述,
W3C官網上紅字體的標準範例顯示,Content-Type: text/html; charset=UTF-8
我當時抓了標準格式就直接用,結果在Apple系統上都正常,在Windows系統上卻問題連連,
最後才知道原來 Outlook 一定要加上換行字元,而且 utf-8 一定要加雙引號。
所以許多問題就出在 Microsoft 的老大心態,早期微軟就是制定格式的權威,大家拿他沒辦法,
自從 W3C 標準出現後,軟體業者就紛紛跟著標準格式走,微軟老大不爽,偏不跟進,
Firefox,Opera,Chrome,Safari相繼搶走大餅後,他才趕緊推出跟著標準走的IE9,
很好笑的是,他搞了個相容模式瀏覽,用來顯示早期不跟著標準走的IE專用網頁。
抱歉,因為回憶起往事,情不自禁,不小心囉唆了一堆,
反正這個問題不出在 iPad2 就是了,謝謝收看。
內文搜尋

X