[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: xls & encoding



On 2005.05.17 at 14:15:46 +0400, Artem Chuprina wrote:
>  >>Наверное, там в соответствующей BIFF-записи прописана неправильная
>  >>кодировка. Можно найти в файле эту запись, и исправить там то что там
>  >>написано на 1251. (оно всё в двоичном виде там). Можно почитать
>  >>исходники xls2csv на тему того, как он определяет кодировку.
>  >>
> 
>  E> не совсем в тему - созданные 1С xls неправильно открываются OO и Gnumeric
>  E> (неверная кодировка). xls2cvs тоже если не указать ему "-s
>  E> cp1251" неправильно отображает эти xls. При этом микрософтовский офис
>  E> показывает их правильно.
> 
>  E> в чем дело и что можно с этим сделать? может быть правда сделать
>  E> небольшую утилитку, позволяющую поправить кодировку в офисных
>  E> файлах?
> 
> Дело, как я понимаю, в том, что кодировка там не указывается, а успех MS
> Office происходит оттого, что когда кодировку не указали, он берет
> текущую системную OEM.  Попробуй открыть тот же документ на английской

Только не OEM, а ANSI. 

В принципе, мне НИКОГДА не попадались файлы Excel, где отсутствовала бы
BIFF-запись CODEPAGE. И попдались rtf-файлы на русском языке, где было
указано \ansicpg1252 (собственно, для этих файлов в catdoc и введено
правило, что -s в командной строке оверрайдит то, что написано в файле)

По идее, если в /etc/catdocrc source_charset  прописан, то для файлов
БЕЗ указания кодировки должне использоваться указанный там charset без
дополнительных действий пользователя. Но указание кодировки в файле,
естественно, имеет приоритет над catdocrc.

В общем - надо разбираться - то ли там неправильный чарсет прописан,
то-ли вообще отсутствует запись codepage. В зависимости от этого правка
будет разной сложности. В первом - два байта подправить, во втором -
добавлять запись и корректировать длинны потоков в OLE directory.



Reply to: