gpt4 book ai didi

java - Excel/Java/Json 的编码问题(德语元音变音)

转载 作者:行者123 更新时间:2023-11-29 08:23:18 26 4
gpt4 key购买 nike

我有一个 Java 小程序,它从 .xlsx 文件读取内容并将其中的一些内容写入新的 .json 文件。在 .xlsx 单元格中有一些带有德语变音符号(“ä, ö, ü”)的字符串。

我的问题:
如果程序在 MacOS 上运行,一切正常。
如果程序在 Windows 上运行,变音符号在生成的 .json 文件中显示为问号 �。

我尝试过的:
1. 将我正在使用的 IDE (Eclipse) 中的项目文本文件的编码设置为 UTF-8
2. 将 Excel 文件(在 Windows 上)的编码设置为 UTF-8

这是我的代码的基本结构,使用库 json simple、gson 和 apache-poi。

读取 .xlsx 文件:

FileInputStream in = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(in);

我到处使用的函数来读取单元格的内容 Row.getCell(index).getStringCellValue()

我将读取的内容放入Spiel类型对象的String Field中,并从该对象生成相应的.json文件,如下所示:

FileWriter writer = new FileWriter("Levels.json");

Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
gson.toJson(spiel, writer);

writer.close();

正如我所说,当我在 Mac 上运行时,一切都运行良好。Excel 文件中有变音符号,当我在 TextEdit 上打开生成的 .json 文件(作为 UTF-8 编码文件)时,它们正常显示。

如果我在 Windows 上运行并打开生成的 .json 文件,例如写字板,所有的变音符号都被这个符号取代了。

由于以后要在windows上运行程序,所以确实需要解决这个问题。我可能做错了什么?

最佳答案

问题是 FileWriter 不允许您指定字符集,而是使用平台默认字符集,每个字符集可能不同。 (对于 MacOS 是“UTF-8”,而在 Windows 上是特定于 Windows 设置的)

改为使用:

Writer writer = new OutputStreamWriter(new FileOutputStream("Levels.json"), 
StandardCharsets.UTF_8);

(JSON 始终根据 JSON 标准使用 UTF-8 字符集)

关于java - Excel/Java/Json 的编码问题(德语元音变音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526842/

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