问题描述
我需要使用字符集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);
解决方法
要精确地满足您的要求,您必须编写特定的代码。
开箱即用的最佳选择是使用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等)。