Кодировка символов в электронной таблице Excel (и какая кодировка Java используется для ее декодирования) - PullRequest
4 голосов
/ 16 сентября 2011

Я использую библиотеку JExcel для чтения электронных таблиц Excel. Каждая ячейка электронной таблицы может содержать строки локализации на любом из примерно 44 языков (английский, португальский, французский, китайский и т. Д.). Сегодня я ничего не говорю API относительно кодировки, которую он должен использовать. С китайцами все в порядке, но португальцы и немцы всегда облажаются. Каким-то образом кодировка по умолчанию (MacRoman на моем компьютере разработчика, UTF-8 на производстве) не может правильно интерпретировать строки, которые он извлекает из книги Excel. Должно быть что-то не так с тем, как JExcel интерпретирует кодировку символов файла.

Как говорится ...

Все ли строки в книге Excel закодированы с одинаковым набором символов?

Существуют ли метаданные книги, которые я могу спросить, что это за набор символов (я еще не нашел его)?

Если я пропущу все ячейки через что-то вроде jchardet (http://jchardet.sourceforge.net/),, вероятно, будет возможность угадать кодировку символов для всей книги (это в значительной степени основано на первом вопросе "да, все строки в данная книга закодирована с одинаковым набором символов ")?

Так много вопросов, так мало времени.

Ответы [ 2 ]

10 голосов
/ 17 сентября 2011

Ну, я не получил ответ напрямую, но обнаружение Мэттом спецификации указывает путь к реальному ответу: http://sc.openoffice.org/excelfileformat.pdf

Тем временем моя проблема ушла, просто установив кодировку всегда равной "Cp1252". Я точно не знаю почему, но я не смотрю, так сказать, на лошадь в подарок, и ухожу.

    WorkbookSettings workbookSettings = new WorkbookSettings();
    workbookSettings.setEncoding( "Cp1252" );
    Workbook.getWorkbook( theFile, workbookSettings );

Я назову этот ответ.

0 голосов
/ 19 июня 2013

У меня проблема в том, что при чтении значений ячеек из файла excel некоторые значения появлялись с "?" поскольку это соответствует буквам с ударением ... Этот код решит эту проблему? Потому что, поскольку я работаю под Windows, я не могу тестировать так быстро, как если бы я был под Linux (который является SO сервера, на котором я развертываюсь) ...

...