2012-10-30 67 views
0

我們必須經常處理特殊字符。遺憾的是,直到現在還沒有人對編碼給予特別的關注。正如你所猜測的,我們總是會得到這樣或那樣的編碼問題。將特殊字符存儲爲unicode

我們目前正致力於將所有特殊字符轉換爲Unicode(在屬性文件和代碼中(我知道這不符合良好的編碼習慣,但目前我們無法改變這一點)

現在我不太清楚,我們應該如何韓德爾來自其他系統的投入使用不同的編碼,我們應該轉換的特殊字符轉換爲Unicode並沒有就如何處理這些?

+3

你沒有給我們*近*足夠的上下文來提供任何有用的答案。請注意,Java中的* all *字符都是Unicode。從另一個源傳輸文本數據時使用哪種編碼*是另一回事。 –

+0

當您在Java代碼中硬編碼並在不支持源文件的信號編碼的JVM環境中運行時,您會說,即使客戶端支持該特定編碼,也會產生垃圾。所以我不同意你的觀點,即所有角色都是unicode ... – dngfng

+0

你還需要什麼信息來提供有用的答案,本質上我們有多個來源爲我們提供輸入和我真正想知道的內容是否有關於如何處理這些包含特殊字符的輸入的特定約定。 – dngfng

回答

0

如果你知道有什麼好的API或公約原始編碼,你可以轉換它使用

String orig = "Cp1250" 
BufferedReader r = new BufferedReader(new InputStreamReader(is, orig)); 

其中字符串orig必須反映此table。然後你可以在代碼中做任何你想做的事情,因爲Java在UTF8內部存儲它。如果您想以不同的編碼再次保存,您將使用明確指定編碼的雙重OutputStreamWriter