Java-JExcel编码到Utf-8

Java-JExcel编码到Utf-8,java,excel,encoding,utf-8,Java,Excel,Encoding,Utf 8,我们这里有一个老应用程序,它可以写入从其他文件读取的xls文件。我面临的问题是,编码并没有传递到新创建的.xls,它跳过了所有特殊字符(ÄÄÖ,我是斯堪的纳维亚人) 我尝试将新工作簿设置为Utf-8,但没有成功,请参见下面的代码: File f = new File(pathName + fileName + ".csv"); System.out.println(splitName[1]); if(f.exists()) f.delete(); OutputStream os = (O

我们这里有一个老应用程序,它可以写入从其他文件读取的xls文件。我面临的问题是,编码并没有传递到新创建的.xls,它跳过了所有特殊字符(ÄÄÖ,我是斯堪的纳维亚人)

我尝试将新工作簿设置为Utf-8,但没有成功,请参见下面的代码:

File f = new File(pathName + fileName + ".csv");
System.out.println(splitName[1]);
if(f.exists())
    f.delete();
OutputStream os = (OutputStream) new FileOutputStream(f);
OutputStreamWriter osw = new OutputStreamWriter(os, "Utf-8");
BufferedWriter bw = new BufferedWriter(osw);
WorkbookSettings ws = new WorkbookSettings();
ws.setLocale(new Locale("en", "EN"));
ws.setEncoding("Utf-8");
Workbook w = Workbook.getWorkbook(new File(pathName + fileName + ".xls"), ws);

我遗漏了什么?

写入.csv是可以的(虽然可能更短)-我使用“UTF-8”,这似乎是每个人都会使用的。因此,工作簿不知怎么读错了。尝试
ws.setEncoding(“Windows-1252”)。但是,谢谢,这并没有解决问题。可能是
ws.setEncoding(“Cp252”);ws.setExcelDisplayLanguage(“sv”);ws.setExcelRegionalSettings(“SE”)。。。新语言环境(“sv”、“SE”)
-可能是英语,恢复为ASCII。您好@JoopEggen,谢谢您的输入,但它不起作用。我尝试设置区域设置等,还将replaceAll正则表达式更改为
[^\\p{ASCII}a-zA-ZÄäÖØÆæ]
。还缩短了编写器:
String encoding=“UTF-8”;BufferedWriter bw=新的BufferedWriter(新的OutputStreamWriter(新的FileOutputStream(f),编码));WorkbookSettings ws=新的WorkbookSettings();ws.setLocale(新的区域设置(“否”);setEncoding(编码);ws.setExcelRegionalSettings(“否”);工作簿w=Workbook.getWorkbook(新文件(路径名+文件名+“.xls”),ws)你用什么来代替你的角色?问号、正方形或一些重复符号(例如,
ª°ª±ª¥¥¥¥¥
)写入.csv是可以的(尽管可能更短)-我使用“UTF-8”,似乎每个人都这样做。因此,工作簿不知怎么读错了。尝试
ws.setEncoding(“Windows-1252”)。但是,谢谢,这并没有解决问题。可能是
ws.setEncoding(“Cp252”);ws.setExcelDisplayLanguage(“sv”);ws.setExcelRegionalSettings(“SE”)。。。新语言环境(“sv”、“SE”)
-可能是英语,恢复为ASCII。您好@JoopEggen,谢谢您的输入,但它不起作用。我尝试设置区域设置等,还将replaceAll正则表达式更改为
[^\\p{ASCII}a-zA-ZÄäÖØÆæ]
。还缩短了编写器:
String encoding=“UTF-8”;BufferedWriter bw=新的BufferedWriter(新的OutputStreamWriter(新的FileOutputStream(f),编码));WorkbookSettings ws=新的WorkbookSettings();ws.setLocale(新的区域设置(“否”);setEncoding(编码);ws.setExcelRegionalSettings(“否”);工作簿w=Workbook.getWorkbook(新文件(路径名+文件名+“.xls”),ws)你用什么来代替你的角色?问号、方格或一些重复符号(例如
ª°ª±ª¥¥¥¥¥¥