Java .properties文件中的日文文本

时间:2011-12-07 14:11:48

标签: java unicode encoding properties

我试图从.properties文件中读取日语字符串值,代码为:

Properties properties = new Properties();
InputStream in = MyClass.class.getResourceAsStream(fileName);
properties.load(in);

问题显然是上面的代码没有识别文件的编码。它只读取英文部分并用问号替换日文字符。顺便说一句,这不是在Swing中显示<​​/ em>日文文本或在编辑器中读/写 UTF-8编码的.properties文件中的问题。这两件事都有效。

Properties类编码 - 不知道吗?是否存在可识别编码的替代方案,它不违反通常在小程序中找到的安全管理器设置?

4 个答案:

答案 0 :(得分:3)

load期望ISO 8859-1编码为noted in the docs

通常,您需要使用native2ascii转换属性文件,使用阅读器加载,或使用XML来指定编码。

答案 1 :(得分:3)

在我看来,你必须将日语字符转换为java Unicode转义字符串

例如,这是我对越南语的方式

Currency_Converter = Chuyen doi tien te  

Enter_Amount = Nh\u1eadp v\u00e0o s\u1ed1 l\u01b0\u1ee3ng  

Source_Currency = \u0110\u01a1n v\u1ecb g\u1ed1c  

Target_Currency = \u0110\u01a1n v\u1ecb chuy\u1ec3n  

Converted_Amount = K\u1ebft qu\u1ea3  

Convert = Chuy\u1ec3n \u0111\u1ed5i  

Alert_Mess = Vui l\u00f2ng nh\u1eadp m\u1ed9t s\u1ed1 h\u1ee3p l\u1ec7  

Alert_Title = Thong bao  

答案 2 :(得分:0)

您是否考虑过使用ResourceBundle

答案 3 :(得分:0)

可以从属性文件中读取任何语言,你应该做的只是从属性文件中按键获取值,然后创建一个新的字符串new String(keyValue.getBytes("ISO-8859-1"), "UTF-8"),也就是说,它将创建一个UTF-8字符串对你而言。

public static String getLocalizedPropertyValue(String fileName, String key, Locale locale) throws UnsupportedEncodingException {
    Properties props = getPropertiesByLocale(fileName, locale);
    String keyValue = props.getProperty(key);
    return keyValue != null ? new String(keyValue.getBytes("ISO-8859-1"), "UTF-8") : "";
}