ResourceBundle可以通過設置不同的編碼格式來解決亂碼問題。可以在創建ResourceBundle對象時指定編碼格式,例如:
ResourceBundle bundle = ResourceBundle.getBundle("ExampleBundle", Locale.getDefault(), new 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 resourceName = toResourceName(bundleName, "properties");
try (InputStream stream = Objects.requireNonNull(loader.getResourceAsStream(resourceName))) {
return new PropertyResourceBundle(new InputStreamReader(stream, StandardCharsets.UTF_8));
}
}
});
在上面的例子中,通過在newBundle方法中指定編碼格式為UTF-8,可以確保正確地處理資源文件中的中文字符,從而解決亂碼問題。您也可以根據實際情況選擇其他編碼格式來處理亂碼問題。