nataraj: (Default)
[personal profile] nataraj
Есть замечательный perl-скрипт html2fb2 писаный неким товарищем Mike Matsnev

Скрипт этот открывает файл, если имя задано, или берет STDOUT, скармливает открытый файл-хэндл HTML::Parser'у и дальше делает что надо.

Все бы хорошо, но возникает одна проблема... HTML::Parser не умеет правильно раскрывать амперсант-последовательности для случая когда его кормят уникодом не сказав что это уникод... (то есть когда в строке уникод но не выставлен флаг UTF8.) Но если открывать уникодный html-файл без доп ухищерений, то именно такие данные из него и приходят.

При этом скрипт сам, на момент открытия файла не всегда знает какая кодировка там будет, потому что в если ничего не сказано явно, то он по возможности берет кодировку из META в заголовке...

Эта мета ловиться парсером, но на момент когда она ловится, файл уже открыт... И из этого открытого файла уже сыпятся уникодная разнобайтица...

Проблема бы легко решалась бы, если бы контент файла загружался целиком, и можно было бы регекспить и преобразовывать его по самое неболуйся...

Но скрипт изначально задуман как фильтр (или какое там правильное слово... короче они не накапливает информацию, а по мере чтения выплевывает вывод, не дожидаясь пока все прочитается), и у нас есть ровно один шанс чтобы сделать все правильно... (Второй раз на STDIN никто ничего посылать не будет)

Вот... Короче я не понимаю как это сделать идеологически правильно не переиначивая всю идею скрипта... :-/

Есть кто-то кто может сказать что-то умное по этому поводу?
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 10th, 2025 10:35 am
Powered by Dreamwidth Studios
OSZAR »