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

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

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

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

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

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

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

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

Есть кто-то кто может сказать что-то умное по этому поводу?

Date: 2008-01-15 09:04 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Посмотри на www.fictionbook.org - вроде был там конвертер.

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

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

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 22nd, 2025 09:35 pm
Powered by Dreamwidth Studios
OSZAR »