gpt4 book ai didi

java - 字符编码问题 - Java

转载 作者:行者123 更新时间:2023-12-01 07:00:06 27 4
gpt4 key购买 nike

我编写了一个小应用程序,它执行一些文本操作并将输出写入文件(html、csv、docx、xml),这一切似乎在 Mac OS X 上运行良好。但在 Windows 上我似乎得到了字符编码问题,很多 '"' 似乎消失了,并被一些奇怪的东西取代。通常是一对中的结束 '"'。

我使用 FreeMarker 创建输出文件,在读取模板和写入输出之间有一个 byte[] 数组,在一种情况下还有一个 ByteArrayStream。我认为这是一个字符编码问题,所以如果有人可以给我建议或向我指出一些用于处理 java 中的字符编码的“最佳实践”资源。

谢谢

最佳答案

实际上只有一个最佳实践:请注意,字符串和字节是两种根本不同的东西,每当您在它们之间进行转换时,您都在使用字符编码(隐式或显式),您需要注意这一点.

Java API 中的典型问题点是:

  • 新字符串(byte[])
  • String.getBytes()
  • 文件读取器、文件写入器

所有这些都隐式使用平台默认编码,这取决于操作系统和用户的区域设置。通常,最好避免这种情况,并在上述情况下显式声明编码(遗憾的是 FileReader/Writer 不允许,因此您必须使用 InputStreamReader/Writer)。

但是,您的引号问题和模板引擎的使用可能有更简单的解释。您使用什么程序来编写模板?听起来像是插入 "smart quotes" 的那个,它们是 Windows 特定的 cp1251 编码的一部分,但不存在于更全局的 ISO-8859-1 编码中。

您可能需要做的是了解模板保存的编码,并将模板引擎配置为在读取模板时使用该编码。另请注意,某些 textxt 文件(特别是 XML)在 header 中显式声明编码,如果该 header 与文件使用的实际编码不一致,您将不可避免地遇到问题。

关于java - 字符编码问题 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724940/

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