我需要使用UTF-8在我的资源属性使用Java的ResourceBundle。当我直接在属性文件中输入文本时,它显示为mojibake。
我的应用程序运行在谷歌应用程序引擎。
谁能给我举个例子?我找不到这份工作。
我需要使用UTF-8在我的资源属性使用Java的ResourceBundle。当我直接在属性文件中输入文本时,它显示为mojibake。
我的应用程序运行在谷歌应用程序引擎。
谁能给我举个例子?我找不到这份工作。
当前回答
打开设置/首选项对话框(Ctrl + Alt + S),然后单击编辑器和文件编码。
然后,在底部,您将找到属性文件的默认编码。选择您的编码类型。
或者,您可以在资源包中使用unicode符号而不是文本(例如“ів”等于\u0456\u0432)
其他回答
这个问题终于在Java 9中得到了解决: https://docs.oracle.com/javase/9/intl/internationalization-enhancements-jdk-9
属性文件的默认编码现在是UTF-8。
大多数现有属性文件不应受到影响:UTF-8和 ISO-8859-1对ASCII字符有相同的编码 人类可读的非ascii ISO-8859-1编码不是有效的UTF-8。如果一个 检测到无效的UTF-8字节序列,Java运行时 自动重新读取ISO-8859-1中的文件。
ResourceBundle。例如,如果属性文件使用cp1251字符集,则使用UTF-8和new String方法的控件将不起作用。
所以我建议使用一种常用的方法:使用unicode符号。:
IDEA -有一个特殊的“透明本机到ascii转换”选项(设置>文件编码)。
Eclipse——有一个插件“属性编辑器”。它可以作为单独的应用程序工作。
假设你有一个ResourceBundle实例,你可以通过以下方式获取String:
String val = bundle.getString(key);
我解决了我的日语显示问题:
return new String(val.getBytes("ISO-8859-1"), "UTF-8");
我们创建了一个资源。utf8文件,包含UTF-8格式的资源,并有一个规则运行如下:
native2ascii -encoding utf8 resources.utf8 resources.properties
Properties prop = new Properties();
String fileName = "./src/test/resources/predefined.properties";
FileInputStream inputStream = new FileInputStream(fileName);
InputStreamReader reader = new InputStreamReader(inputStream,"UTF-8");