2009-08-11 35 views
5

我們有一個應用程序,它將用戶輸入的文本字符串輸入到Web表單中並將其打包爲XML。只是爲了混淆事情,XML是作爲Outlook電子郵件消息的主體發送的。XML中的UTF-8或ISO-8859-1

因爲用戶幾乎可以將任何東西粘貼到Web表單中(通常是Word),所以文本字符串可以包含非ASCII(7位)字符,例如用於打開和關閉雙引號的字符。

該字符串通過電子郵件傳播,但當我們使用Microsoft XML解析器時,它抱怨(非常正確)XML包含無效字符。

快速解決方法是在編碼頭中加入encoding =「iso-8859-1」。但是,我不知道在開始時以真正的UTF-8格式編碼XML文件是否會更好,因爲我已經閱讀過文章,指出如果每個XML文檔都以UTF-8編碼?

但是...我們是否會遇到麻煩,因爲XML文檔實際上是通過電子郵件正文傳輸的?據我所知,UTF-8是一個可變字節長度編碼系統,我假定它使用7位ASCII碼和escapte字符來表示「有更多數據」。

另一個選項是設置爲UTF-8,但用非ASCII字符替換爲& #nnn;格式。

任何建議在這個相當複雜的領域表示讚賞。

乾杯,羅布。

+0

實際上,使用&#的想法並不是很好 - 當文檔打開正確時,它在IE中無法正確顯示。打開/關閉引號顯示爲一個塊。 – 2009-08-11 10:00:44

+0

「塊」表示正在使用的字體沒有可用於顯示字符的字形。 – andynormancx 2009-08-11 10:02:27

+0

ISO 8859-1沒有這些「智能」引號。所以會發生的是,表示這些智能引號的字節最終會隨機成爲其他ISO-8859-1字符,例如,引用文字「。 UTF-8是安全的。 – MSalters 2009-08-11 11:41:08

回答

6

我可能會嘗試儘可能使用UTF-8 - 它只是覆蓋更多的地面,並且比ISO-8859-1更靈活,它會阻塞例如,東歐人物已經(嘗試寫出Jiři或類似於ISO-8859-1的東西 - 它會慘敗)。所以如果你真的想試圖改變(我鼓掌!),那麼我會去UTF-8,如果你真的不能使UTF-8工作,只會訴諸ISO-8859-1。

馬克

7

這裏從外面僅限英語土地{1}我可以證實,UTF-8正常工作無處不在,已經持續了很多年。我無法記住,因爲任何MTA通過剝離第8位(導致「發明」如QP(其基本上解決了症狀而不是解決問題))來破壞電子郵件。 90年代中期發生的情況最爲明顯,儘管UTF-8迅速普及並取代了iso-8859-1。我不記得我什麼時候換了,但我猜它至少在2000年以前。

說到iso-8859-1,它將無法覆蓋來自用戶的所有可能輸入。根據語言的不同,可能需要其他iso-8859變體(例如芬蘭語和威爾士語),即使如此,8859系列也不支持中文等語言。另一方面UTF-8應該涵蓋了一切,所以我強烈推薦到iso-8859-1。

{1} 這可能會影響我的體驗,因爲任何不完全支持UTF-8的程序都會被認爲是垃圾,並且不會在此處使用。