Apache 的 FileHandler 保存 unicode 转义而不是特殊字符

Apache's FileHandler saves unicode escapes instead of special chars

我一直在使用 Apache Commons Configuration2 来管理 属性 文件。问题是,当将配置保存到文件时,特殊字符被替换为它们的 Java 的源代码;如 a=Rumänien -> a=Rum\u00E4nien.

有什么方法可以避免这种情况吗? 最好使用 FileHandlers 或类似的 Writers/Streams,因为我无法使用 Apache 提供的生成器。

读取正确。如果我设置一个断点,我可以看到存储的正确值,但是,一旦我想保留配置,我就会得到那种结果。

这是一个 MCVE,请注意您需要 link 以下 Apache 库:

运行代码前后properties_in.cfg的内容为a=Rumänien.

properties_out.cfg在运行代码之前是不存在的,做了之后就是a=Rum\u00E4nien

原因是,Java 的 属性 文件的严格定义要求它们采用 ISO-8859-1 编码,所有不在其中的 Unicode 字符都将被编码使用 \uXXXX 转义。所以技术上说一切都按规定工作。

如果库允许(可能带有 custom writer),您可以破解它以编写 UTF-8 而不是执行转义。