2011-07-28 191 views
-1

如何在UTF-8編碼失敗時避免擴展ASCII字符的Unicode替換字符?Unicode替換字符

有沒有辦法通過避免Java中的unicode編碼來保留擴展的ASCII字符?

+3

沒有「擴展ASCII」這樣的東西。 ASCII定義了字符值0-127。 –

回答

4

編碼以UTF-8 的Unicode數據不能失敗全部 Unicode字符可以用UTF-8編碼,所以沒有失敗情況(除了可能缺少內存或類似的東西)。

如果你解碼爲 UTF-8,那麼當輸入不是真正的UTF-8時,它可能會失敗。在這種情況下,嘗試使用UTF-8對其進行解碼是錯誤的方法,並且無法「修復UTF-8」來做正確的事情:您必須選擇正確的編碼。

您能否提供一些示例輸入和代碼來演示究竟是什麼這是您遇到的問題?

-1

沒有理由避免unicode編碼。實際的問題來自可靠的舊編碼。

以UTF-8格式轉換所有文件,並使用設置爲UTF-8的系統屬性file.encoding啓動應用程序。

java -Dfile.encoding=UTF-8 

如果您想要更詳細的答案,請提供一些關於您的上下文的更多信息。

+1

更好的解決方案是*指定*代碼中使用的編碼,而不是依賴正確設置的系統屬性。 –

+0

在我們的數據庫中,數據包含像Ô或æ這樣的字符。我們的java應用程序返回一個包含這些字符的XML字符串。但是,如果應用程序被視爲Web服務,並且在axis 1.4 soap客戶端的情況下編碼失敗,但在xfire soap客戶端的情況下不會失敗。在Axis的情況下,這些字符(Ô或æ)在最終結果中顯示爲替換char - \ ufffd。 Axis使用utf-8。不知道爲什麼會這樣。我們的應用程序需要使用Axis soap client unfortunatley。任何幫助,高度讚賞。提前致謝。 –