У меня есть несколько строк на Java (изначально из листа Excel), которые, как я предполагаю, находятся в кодовой странице Windows 1252. Я хочу, чтобы они были преобразованы в собственный формат Unicode Javas. Файл Excel был проанализирован с использованием пакета JXL, в случае, если это имеет значение.
Я уточню: очевидно, строки, полученные из файла Excel, выглядят так, как будто это уже какой-то юникод.
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();
Здесь содержимое, похоже, содержит что-то в юникоде, символы являются многобайтовыми, а символы ASCII - обычными однобайтовыми символами. Это определенно не латынь1. Если я распечатаю строку «содержимое» с помощью printLn и перенаправлю ее в файл hello.txt, я обнаружу, что буква «ö» представлена двумя байтами, C3 B6 в шестнадцатеричном формате. (195 и 179 в десятичном виде.)
[править]
Я попробовал предложения с различными кодовыми страницами и т. Д., Приведенные ниже, попытался конвертировать из Cp1252 и т. Д. Было какое-то преобразование, потому что вместо этого я получил бы какой-то другой бред. Для справки я всегда печатал строку «ö», закодированную в исходном коде, чтобы убедиться, что с моим терминалом, гарнитурами или чем-то еще не было ничего плохого. «Ö», введенное вручную, всегда работало.
[править]
Я также попробовал WorkBookSettings, как это было предложено в комментариях, но я искал код для JXL, и набор символов, похоже, игнорируется при разборе кода. Я думаю, что код синтаксического анализа просто смотрит на то, в какой кодировке должен быть файл XLS.