我试图从.properties文件中读取日语字符串值,代码为:
Properties properties = new Properties();
InputStream in = MyClass.class.getResourceAsStream(fileName);
properties.load(in);
问题显然是上面的代码没有识别文件的编码。它只读取英文部分并用问号替换日文字符。顺便说一句,这不是在Swing中显示</ em>日文文本或在编辑器中读/写 UTF-8编码的.properties文件中的问题。这两件事都有效。
Properties
类编码 - 不知道吗?是否存在可识别编码的替代方案,它不违反通常在小程序中找到的安全管理器设置?
答案 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") : "";
}