簡體   English   中英

Java:關於字符集轉換的建議

[英]Java: Advise on Charset Conversion

我一直在研究執行以下操作的場景:

  1. 獲取Unicode格式的輸入數據; [UTF-8]
  2. 轉換為 ISO-8559;
  3. 檢測並替換不支持的字符進行編碼; 【基於用戶自定義鍵值對】

我的問題是,我一直在嘗試深入查找有關 ISO-8559 的信息,但還沒有運氣。 有沒有人碰巧知道更多關於這件事? 這與 ISO-8859 有何不同? 任何細節都會很有幫助。

其次,撇開 ISO-8559 的要求不談,我繼續編寫程序,將傳入的數據轉換為 Java 中的 ISO-8859。 雖然我能夠使用基於字符的替換來實現所需的內容,但當數據量很大時,這顯然很耗時。 [以 MB 為單位]

我相信一定有更好的方法來做到這一點。 有人可以給我建議嗎?

我假設您想將 UTF-8 轉換為 ISO-8859 -1 ,即 Western Latin-1。 網絡中有許多字符集表。

  1. 一般來說,對於網絡瀏覽器和 Windows,最好轉換為Windows-1252 ,這是一個重新定義范圍 0x80 - 0xBF 的擴展,在 MS Word 中看到的更多帶有特殊引號。 即使在 Mac 上,瀏覽器實際上也能夠解釋 ISO-559-1 中的這些代碼。

  2. new OutputStreamWriter(new FileOutputStream("..."), "Windows-1252")這樣的 Java 標准轉換已經做了很多。 您可以編寫一種過濾器,或者查找介紹? 未翻譯的特殊字符。 您可以將帶有不在 Windows-1252 中的重音符號的拉丁字母轉換為 ASCII 字母:

     String s = ... s = Normalizer.normalize(s, Normalizer.Form.NFD); return s = s.replaceAll("\\\\p{InCombiningDiacriticalMarks}", "");
  3. 對於其他腳本,如印地語或西里爾文,要搜索的關鍵字是音譯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM