如何在ZipEntry中写中文字符?

以赛亚·贝扬

我想在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 CentralGithub上找到。它作为Maven工件并带有源代码和javadoc

这是类StringUnicodeEncoderDecoder的javadoc

我尝试了您的输入,并得到了:

System.out.println(StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("类型"));
System.out.println(StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("类型"));

输出为:

\u7c7b\u578b
\u00e7\u00b1\u00bb\u00e5\u017e\u2039

所以看起来您确实丢失了信息,而不仅仅是显示问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

模仿Web URL在python中编码中文字符

来自分类Dev

Java中的中文字符串处理?

来自分类Dev

Firefox 57.0中不显示中文字符

来自分类Dev

iText - 不显示中文字符

来自分类Dev

WM_SETTEXT 写中文字母

来自分类Dev

如何将 Flask 的 request.get_data() 中的原始数据解析为中文字符?

来自分类Dev

Pygame-如何居中文字

来自分类Dev

Jekyll Kramdown如何居中文字

来自分类Dev

在页脚中以图像居中文字

来自分类Dev

在php图像中居中文字

来自分类Dev

无法在Python中的中文字符串中逐字符打印

来自分类Dev

如何将中文十六进制字符串解码为中文字符或JavaScript?

来自分类Dev

Java + Spring + Vault:密码中的中文字符,变为“ ???” 在应用程序中

来自分类Dev

如何在sql server中使用正则表达式将字符串与中文字符进行比较

来自分类Dev

如何让Swift / Xcode控制台显示中文字符而不是unicode?

来自分类Dev

android如何解析包含日语或中文字符的mailto url

来自分类Dev

如何将Gmail的主题信息更改为中文字符?

来自分类Dev

str_replace()不会替换中文字符串中的needle

来自分类Dev

Python CSV写入到Excel中不可读的文件(中文字符)

来自分类Dev

在Python中从中文字符串日期中提取日期

来自分类Dev

Windows中带有中文字符的python调用命令行失败

来自分类Dev

如果中文字符串显示在Python的pandas DataFrame中怎么办

来自分类Dev

包含中文字符到ASCII的字符串

来自分类Dev

如何在CSS中使用繁体中文字体?

来自分类Dev

Perl-带中文字符的quotemeta

来自分类Dev

Java无法以正确的编码读取中文字符

来自分类Dev

Strings.xml无法识别中文字符

来自分类Dev

在VIM中看不到中文字符

来自分类Dev

QLineEdit日语/中文字符䭢未显示

Related 相关文章

  1. 1

    模仿Web URL在python中编码中文字符

  2. 2

    Java中的中文字符串处理?

  3. 3

    Firefox 57.0中不显示中文字符

  4. 4

    iText - 不显示中文字符

  5. 5

    WM_SETTEXT 写中文字母

  6. 6

    如何将 Flask 的 request.get_data() 中的原始数据解析为中文字符?

  7. 7

    Pygame-如何居中文字

  8. 8

    Jekyll Kramdown如何居中文字

  9. 9

    在页脚中以图像居中文字

  10. 10

    在php图像中居中文字

  11. 11

    无法在Python中的中文字符串中逐字符打印

  12. 12

    如何将中文十六进制字符串解码为中文字符或JavaScript?

  13. 13

    Java + Spring + Vault:密码中的中文字符,变为“ ???” 在应用程序中

  14. 14

    如何在sql server中使用正则表达式将字符串与中文字符进行比较

  15. 15

    如何让Swift / Xcode控制台显示中文字符而不是unicode?

  16. 16

    android如何解析包含日语或中文字符的mailto url

  17. 17

    如何将Gmail的主题信息更改为中文字符?

  18. 18

    str_replace()不会替换中文字符串中的needle

  19. 19

    Python CSV写入到Excel中不可读的文件(中文字符)

  20. 20

    在Python中从中文字符串日期中提取日期

  21. 21

    Windows中带有中文字符的python调用命令行失败

  22. 22

    如果中文字符串显示在Python的pandas DataFrame中怎么办

  23. 23

    包含中文字符到ASCII的字符串

  24. 24

    如何在CSS中使用繁体中文字体?

  25. 25

    Perl-带中文字符的quotemeta

  26. 26

    Java无法以正确的编码读取中文字符

  27. 27

    Strings.xml无法识别中文字符

  28. 28

    在VIM中看不到中文字符

  29. 29

    QLineEdit日语/中文字符䭢未显示

热门标签

归档