gpt4 book ai didi

java - 如何在 ZipEntry 中书写汉字?

转载 作者:行者123 更新时间:2023-12-02 09:21:48 25 4
gpt4 key购买 nike

我想将字符串(中文文本)导出到 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 库,其中有一个实用程序可以将任何字符串转换为 Unicode 序列,反之亦然。当我诊断各种与字符集相关的问题时,这个实用程序多次帮助我。这是代码的示例

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

看来您确实丢失了信息,而且这不仅仅是显示问题

关于java - 如何在 ZipEntry 中书写汉字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com