Excel电子表格中的字符编码(以及用于解码它的Java字符集)

时间:2011-09-16 19:07:43

标签: java excel character-encoding cp1252

我正在使用JExcel库来阅读excel电子表格。电子表格中的每个单元格都可以包含44种语言(英语,葡萄牙语,法语,中文等)中的任何一种本地化字符串。今天我不告诉API有关它应该使用的编码的任何信息。它处理中国好,但它总是搞乱葡萄牙和德国。不知何故,默认编码(我的开发盒上的MacRoman,生产中的UTF-8)无法正确解释它从excel工作簿中拉出的字符串。 JExcel如何解释文件的字符编码会有问题。

有人说......

excel工作簿中的所有字符串是否都使用相同的字符集进行编码?

是否有工作簿元数据我可以问这个字符集是什么(我还没找到)?

如果我通过像jchardet(http://jchardet.sourceforge.net/)之类的东西运行所有单元格,是否可能能够为整个工作簿划分字符编码(这几乎取决于第一个问题是“是的,给定工作簿中的所有行为都使用相同的字符集进行编码”)?

这么多问题,时间很少。

2 个答案:

答案 0 :(得分:10)

嗯,我没有直接得到答案,但马特发现的一个规范指出了实际答案:http://sc.openoffice.org/excelfileformat.pdf

与此同时,只需将编码设置为“Cp1252”,我的问题就消失了。我不确定为什么,但我不是在寻找一匹礼物马,可以这么说,并且正在继续前进。

    WorkbookSettings workbookSettings = new WorkbookSettings();
    workbookSettings.setEncoding( "Cp1252" );
    Workbook.getWorkbook( theFile, workbookSettings );

我会称这个人回答。

答案 1 :(得分:0)

我遇到的问题是,在从excel文件中读取单元格值时,某些值显示为“?”因为这对应于带重音的字母......那个代码会解决这个问题吗?因为当我在Windows下运行时,我无法像在Linux下那样快速测试(这是我正在部署的服务器的SO)...