- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!