Java CP1252 для UTF8 - PullRequest
       19

Java CP1252 для UTF8

0 голосов
/ 05 октября 2018

У меня есть электронная таблица (.xls) с номерами автомобильных номеров в кодировке windows-1252, НО первоначально эти цифры вводились кириллицей в кодировке UTF-8.Что я имею в виду: т. Е. У992НВ в кириллице - это то же самое, что и Y992HB в латинском (есть разница между первыми буквами). Итак, я беру эти цифры и преобразую их

 if (cell.getCellType() == CellType.STRING) {
                    String cellValue = cell.getStringCellValue();
                    try {
                        byte[] b = cellValue.getBytes("windows-1252");
                        String cellValue2 = new String(b, StandardCharsets.UTF_8);
                        cell.setCellValue(cellValue2);
                    }
                    catch ( UnsupportedEncodingException ex) {

                    }

Но вывод неправильный.Входные данные в windows-1252 - « Ð ¢ 313ÐÐ777 », а выходные данные - Т313�К777, поскольку средний знак не читается.Что я делаю неправильно?

1 Ответ

0 голосов
/ 19 октября 2018
  1. Байт Java не является байтом.Таким образом, побайтовое декодирование не сработало.
  2. Я проанализировал символы dex и попытался декодировать их путем сопоставления значений с UTF8.Некоторые значения были эквивалентны только UTF-8 latin-1.Я нашел пакет для Python, чтобы декодировать сломанный UTF-8.Оно работает.НО: Это не работает с Jython 2.7, потому что сопровождающий отказался от поддержки Python 2.7

Спасибо за вашу помощь.

...