Вскрываем карты. Триллиан (клон ICQ) хранил логи сообщений в cp1251, с новой версии он же пишет в те же логи utf8.
Возникла необходимость переконвертить. Ни одна найденная утила файлы пачкой перекодировать не хотела, а руками не хотелось мне.
Я некоторое время апологетил BeOS, там понял что такое utf8 и чем он отличается от однобайтных кодировок.
Думал, перекод на Перле уместится в пару-тройку строк. Даже заранее нарыл perl2exe чтобы раздать перекодировщик знакомым, которые из-за несовместимости базы не спешат переходить.
Хотелось сделать всё самому, найти в логах восьмибайтные символы и переписать их двумя байтами utf8. Плюс добавить трёхбайтный header к txt файлу, чтобы он опозновался как utf8 (как это работает так и не понял).
Трабла в том, что уже поздно перекодировать строчками, логи у меня уже разбавлены utf8 и лучше было бы побайтно заменить все cp1251.
Поэтому вопрос формулируется так: как узнать двоичный или hex код символа. С pack ничего у меня не получилось. Доки читал, но реультат совершенно не тот, что мне кажется был должен получится.
NeoNox, binmode OUT, utf8 как-то хитро пишет в файл с нужными crlf. Я ночью читал, не выспался, забыл уже что это такое.
ondr, он 5.8.0. Рубить "\\n" приходится для подстаховки, ведь chomp удаляет все переносы строки, неважно, unix или win. "И вообще" я вчера как раз и читал. Похоже, бесполезно.