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 クラスの 1 行を変更するだけなので、上記の方が気に入っています。