【发布时间】:2019-04-05 00:55:19
【问题描述】:
我有一个 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类型的Object的String Field中,并从此Object生成对应的.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上运行程序,我真的需要解决这个问题。我可能做错了什么?
【问题讨论】:
-
写字板可能是最糟糕的编辑器。尝试安装 Notepad++ 或 Atom。它们都可以呈现扩展字符集和 Unicode 编码。
标签: java json excel utf-8 apache-poi