【发布时间】:2011-09-16 19:07:43
【问题描述】:
我正在使用 JExcel 库来读取 Excel 电子表格。电子表格上的每个单元格都可能包含 44 种语言(英语、葡萄牙语、法语、中文等)中的任何一种的本地化字符串。今天我没有告诉 API 任何关于它应该使用的编码的信息。它处理中文还可以,但它总是搞砸葡萄牙语和德语。不知何故,默认编码(我的开发盒上的 MacRoman,生产上的 UTF-8)无法正确解释它从 excel 工作簿中提取的字符串。 JExcel 解释文件字符编码的方式肯定有问题。
话说回来……
excel工作簿中的所有字符串是否都使用相同的字符集编码?
是否有工作簿元数据我可以问这个字符集是什么(我还没有找到)?
如果我通过 jchardet (http://jchardet.sourceforge.net/) 之类的东西运行所有单元格,是否能够预测整个工作簿的字符编码(这几乎取决于第一个问题是“是的,给定工作簿中的所有字符串都使用相同的字符集编码”)?
这么多问题,这么少时间。
【问题讨论】:
-
您是在阅读
.xls文件还是.xlsx文件? -
它们是 .xls 文件。 .xlsx 的答案会改变吗?
-
.xlsx文件实际上只是 XML 文件,这(我会认为)意味着整个文件只有一个编码。另一方面,.xls(我再次认为)是一种二进制格式,所以我不确定每个单元格是否可以有自己的字符编码... -
我认为你是对的,马特。 XLS 是一种二进制格式。我在上面的逻辑中也有一个“哦,废话”的时刻; JExcel API 要求我在解析之前设置工作簿编码。我在想我可以解析以找出编码。岩石。硬地。
-
找到了 XLS 编码规范,感谢维基百科:sc.openoffice.org/excelfileformat.pdf
标签: java excel character-encoding cp1252