我有一些Java中的字符串(最初来自Excel工作表),我认为它在Windows 1252代码页中.我希望他们转换为Javas自己的unicode格式.如果重要的话,使用JXL包解析Excel文件.
我将澄清:显然,从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是正常的单字节字符.绝对不是拉丁文1.如果我用printLn打印"contents"字符串并将其重定向到hello.txt文件,我发现字母"ö"用两个字节表示,C3 B6用十六进制表示.(十进制195和179)
[编辑]
我尝试了下面给出的不同代码页等的建议,尝试从Cp1252等转换.有某种转换,因为我会得到一些其他类型的乱码.作为参考,我总是在源代码中打印一个"ö"字符串,以验证我的终端或字体或任何东西没有问题.手动输入的"ö"始终有效.
[编辑]
我也按照评论中的建议尝试了WorkBookSettings,但我查看了JXL的代码,并且通过解析代码似乎忽略了characterSet.我认为解析代码只是查看XLS文件应该在的任何编码.
WorkbookSettings ws = new WorkbookSettings();
ws.setEncoding( "CP1250");
为我工作.