正在属性文件中保存特殊字符



我有一个包含一些特殊字符的字符串属性。在我把它保存到属性文件后,我有:

BBu0161BB=0

我不喜欢用u0161表示的字符。为什么它不能像我在屏幕上看到的字符一样保存并从键盘上键入?

UPD读取包含特殊字符的ini文件体系结构文件最简单的方法是什么?

这就是Properties文件的行为定义。任何其他系统都可能使用UTF-8,这可能也不可读。

由于您的字符不在ISO-8859-1编码的范围内,因此必须使用unicode。

您可以!

使用另一个应用程序(例如,Notepad++很好)用unicode(例如,UTF-8)编码文件,然后读取属性文件,如下所示:

File file = ... ;
Properties properties = new Properties();
try (FileInputStream in = new FileInputStream(file);
     Reader reader = new InputStreamReader(in, StandardCharsets.UTF_8)) {
  properties.load(reader);
}
// use properties

在这里,您可以读取和使用任何字符集中的属性文件。

你不能。来自javadoc:

输入/输出流以ISO 8859-1字符编码编码。无法在此中直接表示的字符可以使用节中定义的Unicode转义来编写编码Java的3.3™语言规范;转义序列中只允许使用单个"u"字符。

请参阅如何使用ResourceBundle 在资源属性中使用UTF-8

Properties文件是ISO-8859-1编码的,因此需要对该集合之外的字符进行uXXXX转义。

最新更新