使用Excel/Java/Json编码问题(德语Umlaut)
我有一个Java小程序,它从.xlsx文件中读取内容,并将其中的一些内容写入一个新的.json文件。 在.xlsx单元格中有一些带有德语Umlautsä,ö,ü的字符串 我的问题是: 如果程序在MacOS上运行,一切正常。 如果程序在Windows上运行,UMLAUT将显示为问号� 在生成的.json文件上 我尝试的是: 1.将我在Eclipse中工作的IDE中的项目文本文件的编码设置为UTF-8 2.将Windows上Excel文件的编码设置为UTF-8 下面是我的代码的基本结构,使用json simple、gson和ApachePOI库 读取.xlsx文件:使用Excel/Java/Json编码问题(德语Umlaut),java,json,excel,utf-8,apache-poi,Java,Json,Excel,Utf 8,Apache Poi,我有一个Java小程序,它从.xlsx文件中读取内容,并将其中的一些内容写入一个新的.json文件。 在.xlsx单元格中有一些带有德语Umlautsä,ö,ü的字符串 我的问题是: 如果程序在MacOS上运行,一切正常。 如果程序在Windows上运行,UMLAUT将显示为问号� 在生成的.json文件上 我尝试的是: 1.将我在Eclipse中工作的IDE中的项目文本文件的编码设置为UTF-8 2.将Windows上Excel文件的编码设置为UTF-8 下面是我的代码的基本结构,使用json
FileInputStream in = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(in);
我在everywhere中使用的函数用于读取单元格行的内容。getCellindex.getStringCellValue
我将读取的内容放在Spiel类型对象的字符串字段中,并从该对象生成相应的.json文件,如下所示:
FileWriter writer = new FileWriter("Levels.json");
Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
gson.toJson(spiel, writer);
writer.close();
正如我所说,当我在Mac上运行时,一切都很好。
Excel文件中有UMLAUT,当我在TextEdit上以UTF-8编码文件的形式打开生成的.json文件时,它们会正常显示
如果我在Windows上运行并在写字板上打开生成的.json文件,则所有UMLAUT都将替换为此符号�.
因为我以后需要在Windows上运行这个程序,所以我真的需要解决这个问题。我可能做错了什么?问题是FileWriter不允许您指定字符集,而是使用平台默认字符集,每个字符集可能不同。并且是针对MacOS的UTF-8,而它是Windows上特定的Windows设置
而是使用:
Writer writer = new OutputStreamWriter(new FileOutputStream("Levels.json"),
StandardCharsets.UTF_8);
JSON总是按照JSON标准使用UTF-8字符集。问题是FileWriter不允许您指定字符集,而是使用平台默认字符集,每个字符集可能不同。并且是针对MacOS的UTF-8,而它是Windows上特定的Windows设置
而是使用:
Writer writer = new OutputStreamWriter(new FileOutputStream("Levels.json"),
StandardCharsets.UTF_8);
JSON总是按照JSON标准使用UTF-8字符集写字板可能是最糟糕的编辑器。请尝试安装记事本++或Atom。它们可以呈现扩展字符集和Unicode编码。写字板可能是最糟糕的编辑器。请尝试安装记事本++或Atom。它们可以呈现扩展字符集和Unicode编码。