簡體   English   中英

如何設置包的編碼?

[英]How to set encoding for bundle?

我為i18n使用屬性。 如果我指定非英語語言環境:

ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new Locale("tr", "TR"));

我看到錯誤編碼的消息:

ÐÑивеÑ!

如何設置正確的編碼?

問題:默認情況下,ISO 8859-1字符編碼用於讀取屬性文件的內容,因此,如果文件包含ISO 8859-1以外的任何字符,則將無法對其進行正確處理。

第一個解決方案:使用native2ascii-Native-to-ASCII Converter處理屬性文件以使其具有ISO 8859-1字符編碼的內容

native2ascii的作用:它將所有非ISO 8859-1字符轉換為等效的\\ uXXXX。 這是一個很好的工具,因為您無需搜索\\ uXXXX等價的特殊字符。

UTF-8的用法: native2ascii -encoding utf8 e:\\a.txt e:\\b.txt

如果使用Eclipse,則會注意到它會將特殊字符隱式轉換為\\ uXXXX。 嘗試復制

會意字/會意字

到在Eclipse中打開的屬性文件中。

第二種解決方案:創建一個自定義ResourceBundle.Control類,該類可與ResourceBundle一起使用,以讀取任何給定編碼方案中的屬性。 您可能要使用已經創建並共享的CustomResourceBundleControl 使用它如下:

ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new CustomResourceBundleControl("UTF-8"));

暫無
暫無

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

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