我认为在 Windows 1252 代码页中有一些 Java 字符串(最初来自 Excel 表)。我希望它们转换为 Java 自己的 unicode 格式。Excel 文件是使用 JXL 包解析的,以防万一。
我要澄清一下:显然,从 Excel 文件中获取的字符串看起来很像它已经是某种 unicode。
WorkbookSettings ws = new WorkbookSettings();
ws.setCharacterSet(someInteger);
Workbook workbook = Workbook.getWorkbook(new File(filename), ws);
Sheet s = workbook.getSheet(sheet);
row = s.getRow(4);
String contents = row[0].getContents();
这是内容似乎包含 unicode 的地方,åäö 是多字节字符,而 ASCII 是普通的单字节字符。它绝对不是Latin1。如果我用 printLn 打印“内容”字符串并将其重定向到 hello.txt 文件,我发现字母“ö”用两个字节表示,十六进制的 C3 B6。(十进制的 195 和 179。)
[编辑]
我已经尝试了下面给出的不同代码页等的建议,尝试从 Cp1252 等转换。有某种转换,因为我会得到一些其他类型的乱码。作为参考,我总是在源代码中打印一个手工编码的“ö”字符串,以验证我的终端或字体或任何东西没有问题。手动输入的“ö”始终有效。
[编辑]
我还按照评论中的建议尝试了 WorkBookSettings,但是我查看了 JXL 的代码,并且 characterSet 似乎被解析代码忽略了。我认为解析代码只是查看 XLS 文件应该使用的任何编码。