我想在zip文件中将字符串(中文)导出为CSV文件。我需要在哪里将编码设置为UTF-8?或者我应该采取什么方法(基于下面的代码)在导出的CSV文件中显示中文字符?
这是我目前拥有的代码。
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(out, StandardCharsets.UTF_8)
try {
ZipEntry entry = new ZipEntry("chinese.csv");
zipOut.putNextEntry(entry);
zipOut.write("类型".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
zipOut.close();
out.close();
}
而不是“类型”,我在CSV文件中得到“类型”。
首先,您肯定需要更改zipOut.write("类型".getBytes());
为。zipOut.write("类型".getBytes(StandardCharsets.UTF_8));
此外,当打开生成的CSV文件时,编辑器可能不知道该内容是以UTF-8编码的。您可能需要告诉您的编辑器它是UTF-8编码。例如,在记事本中,您可以使用“另存为”选项保存文件,并将编码更改为UTF-8。另外,您的问题可能只是显示错误,而不是实际编码。有一个开源Java库,该库具有一个实用程序,可将任何String转换为Unicode Sequence,反之亦然。当我诊断各种与字符集相关的问题时,该实用程序为我提供了很多帮助。这是示例代码的作用
result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);
此代码的输出是:
\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World
该库可以在Maven Central或Github上找到。它作为Maven工件并带有源代码和javadoc
这是类StringUnicodeEncoderDecoder的javadoc
我尝试了您的输入,并得到了:
System.out.println(StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("类型"));
System.out.println(StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("类型"));
输出为:
\u7c7b\u578b
\u00e7\u00b1\u00bb\u00e5\u017e\u2039
所以看起来您确实丢失了信息,而不仅仅是显示问题
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句