微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java properties.store应该仅对字符集中的字符进行编码

如何解决Java properties.store应该仅对字符集中的字符进行编码

我需要使用字符集ISO_8859_1创建一个属性文件。在此文件中,我必须存储不属于此字符集的字符。将字符集更改为不幸的是,UTF-8不是一种选择。但是,这些字符已经作为Unicode转义序列传递。目的是在创建文件时不对它们进行解释,而是将其保留为Unicode转义序列。

应该如何:
\ u00C2->Â
\ u2193-> \ u2193

目前如何:
\ u00C2->Â
\ u2193->吗?

这就是我当前的存储方法

properties.store(new BufferedWriter(
        new OutputStreamWriter(new FileOutputStream(sourceAndDestinationFile),StandardCharsets.ISO_8859_1)),null);

有什么办法告诉store方法只编码字符集允许的内容吗?

解决方法

精确地满足您的要求,您必须编写特定的代码。

开箱即用的最佳选择是使用Window版本。 store​(OutputStream,String)方法不支持store​(Writer,String) Unicode转义(假定您使用的Writer能够代表所有相关字符)。

\uxxxx版本使用store​(OutputStream,String) Unicode转义来显式支持ISO-8859-1。唯一的区别是,对于无法通过ASCII打印的所有内容,它都经常使用这种转义,因此\uxxxx将被写为Â

基本原理是生成的文件有效地进行了ASCII编码,因此可以与广泛的阅读器兼容(使用ASCII,许多ISO-8859版本和派生版本,UTF-8等)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。