PDA

Просмотр полной версии : изменение UTF-8 файла на лету


Dr.OH
15.03.2008, 14:40
Срочно нужна помощь - не пойму в чем дело. Задача: нужно прочитать файл через http (т.е. открыть сокет и считать выводимые данные) и добавить в файл одну строку.
В чем проблема: при считывании UTF-8 файла не удаётся туда ничего добавлять - в начале файла стоит какое-то число. Сначала думал, что это просто сингнатура UTF-файла, но оказалось, что нет. Число 21db. при его изменении меняется и размер выводимого файла, т.е. просто обрезается содержимое до непонятное величины. Если число поменять на FFh FEh (сигнатура UTF) то выводится 64 715 байт из 130 779.
Что это за число и на что его надо изменить, чтобы все работало?
Вариант типа все считать в строку, потом преобразовать в cp1251, а потом в utf-8 не подойдет, т.к., во-первых, в тексте есть UTF-8 символы, которые нет в CP1251, а, во-вторых, это загонный путь.

kotsie
16.03.2008, 15:27
вы хотите изменить файл на удалённом сервере через http? не думаю, что сервер это даст.
UTF-8 не при чём. число, которое вы видите - это часть протокола http, я думаю у вас идёт transfer-method: chunked (или нечто похожее) весь файл разбивается на кусочки, в начале каждого кусочка пишется его длина. т.е. прочитав 21db, вы знаете сколько байт надо прочитать до конца куска. дальше, если я не ошибаюсь, будет длина следующего куска и т.д.