2011-01-10 91 views
6

我想在消息資源包寫「阿拉伯語」(屬性)文件,但是當我試圖挽救它,我得到這個錯誤:「使用保存無法完成 某些字符不能映射」 ISOJava:如何在屬性文件中編寫「阿拉伯語」?

-85591-1「字符編碼,或者更改編碼或刪除字符...」

任何人都可以引導嗎?

我想寫:

global.username =اسمالمستخدم

我應該怎麼寫 「用戶名」 的屬性文件中的阿拉伯語?因此,公司國際工程..

BR SC

回答

5

在類參考的 「屬性」

The load(Reader)/store(Writer, String) methods load and store properties from and to a character based stream in a simple line-oriented format specified below. The load(InputStream)/store(OutputStream, String) methods work the same way as the load(Reader)/store(Writer, String) pair, except the input/output stream is encoded in ISO 8859-1 character encoding. Characters that cannot be directly represented in this encoding can be written using Unicode escapes ; only a single 'u' character is allowed in an escape sequence. The native2ascii tool can be used to convert property files to and from other character encodings.

0

如果您使用的是Eclipse,你可以選擇「窗口說明 - >首選項「然後過濾」內容類型「。那麼你應該可以設置默認編碼。有一個屏幕快照顯示在this post的頂部。

+0

而這究竟會如何幫助? – jarnbjo 2011-01-10 16:07:59

+1

這是我在嘗試執行類似操作時遇到同樣的錯誤消息時,如何設置屬性文件的編碼。 – smcmahon 2011-01-10 16:10:57

4

基於屬性的資源包必須在ISO-8859-1編碼使用默認加載機制,但是我已經成功地使用這些代碼以允許屬性文件中UTF-8編碼:

private static class ResourceControl extends ResourceBundle.Control { 
    @Override 
    public ResourceBundle newBundle(String baseName, Locale locale, 
      String format, ClassLoader loader, boolean reload) 
      throws IllegalAccessException, InstantiationException, 
      IOException { 
     String bundlename = toBundleName(baseName, locale); 
     String resName = toResourceName(bundlename, "properties"); 
     InputStream stream = loader.getResourceAsStream(resName); 
     return new PropertyResourceBundle(new InputStreamReader(stream, 
       "UTF-8")); 
    } 

} 

那麼當然你必須改變文件本身爲UTF-8編碼在你的IDE,並且可以使用它像這樣:

ResourceBundle bundle = ResourceBundle.getBundle(
    "package.Bundle", new ResourceControl()); 
0

這主要是一個編輯器配置問題。如果您在Windows中工作,則可以在支持UTF-8的編輯器中編輯文本。如果您將文件保存爲UTF-8,則記事本或Eclipse內置編輯器應該綽綽有餘。在Linux中,我成功地使用了gedit和emacs。在記事本中,您可以通過點擊「另存爲」按鈕並選擇「UTF-8」編碼來完成此操作。其他編輯應該有類似的功能。有些編輯可能需要更改字體才能正確顯示字母,但似乎沒有這個問題。

話雖如此,在爲阿拉伯語執行i18n時還有其他步驟需要考慮。您可以在下面找到一些有用的鏈接。確保在使用它之前在屬性文件上使用native2ascii,否則它可能無法工作。我花了很多時間,直到我明白了這一點。

Tomcat webapps

Using nativ2ascii with properties files

1

new String(ret.getBytes("ISO-8859-1"), "UTF-8");爲我工作。 保存在ISO-8859-1 Encoding中的屬性文件。

相關問題