我有一个名为 theProperties.properties 编码为 UTF-8 的属性文件:
property1=Some Chinese Characters: 会意字會意字
property2=More chinese Char - 假借
property2=<any other valid UTF-8 characters>
我使用资源包来提取本地化字符串:
ResourceBundle localizedStrings = ResourceBundle.getBundle(
"theProperties.properties",
locale
);
资源包假定所有字符串都在 ISO-8859-1 中,我的资源文件被编码为 UTF-8。我需要将字符串转换为 UTF-8
像这样包装资源包并从中拉出字符串是否安全:
public String getLocalizedString(String key){
String localizedString_ISO_8859_1 = localizedStrings.getString(key);
String localizedString_UTF_8 = new String(localizedString_ISO_8859_1.getBytes("ISO-8859-1"), "UTF-8");
return localizedString_UTF_8;
}
这段代码是否存在不安全的情况?感觉它可能不安全但字符串是不可变的,这是否意味着下面的字节也是不可变的?
还有其他方法可以做到这一点,但这种方法更短,所以如果它是安全的,我更愿意使用它。
这是解决这个问题的另一种方法,但它有点长,从易于阅读的角度来看,我更喜欢上面的方法,因为这个解决方案只改变了 Control 类中的一行。