1. createl - 10 Февраля, 2013 - 23:03:38 - перейти к сообщению
Может кто подскажет чего? Нужно файлик закодированный UCS-2LE перекодировать в windows кодировку. Все в принципе ясно как, но fgets не работает (видимо файл ей не воспринимается как текстовый, и она там не видит строк) может еще есть какие то варианты читать его по частям?
2. DeepVarvar - 10 Февраля, 2013 - 23:19:07 - перейти к сообщению
3. createl - 11 Февраля, 2013 - 23:24:01 - перейти к сообщению
DeepVarvar пишет:
Все оказалось проще. Для виндовса существует различие бинарный/текстовый файл, и кодированный в UCS-2 по видимому первый вариант. Решается просто, открывается файл fopen () с флагом rb вместо a и fgets() корректно читает построчно.
Но радость моя была преждевременна. Почему то отказалась работать iconv(), хотя в ходе экспериментов все норм было
Но может это и к лучшем, поскольку я полез глубже, и о чудо! - начал понимать, что написанно в hex редакторе (за долгие годы учебы, попытки педагогов пробиться сквозь мое деревянное сознание, и объяснить основы, не увенчались успехом, а полез сам, и как дрелью...)
В общем родил своего франкенштейна. С учетом того, что закодирована латиница, по непонятным причинам кодированная в UCS, просто убираем лишний нулевой байт (если он будет не нулевой, то будет крякозябра, хотя можно и ее убрать).
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- $count = 0;
- $no_decoded_simbol = 0;
- {
- $str_decoded = '';
- {
- if ($sl % 2);
- }
- }
- echo "Не декодированно символов " . $no_decoded_simbol;
Все работает, на выходе рабочий файл. Но опять засада. Расчет времени, которое будет затрачено на нужный мне файл (он большой по размеру) больше двух суток. Это уже никуда не годится. На большее неспособен мой пенькокор 2. Хотя и i7, которым мне и не сниться, думается, не больше трети по времени сэкономит, так как все в один поток. Да и пых, наверное, загнется раньше. Вообщем мучаюсь с этим файлом уже кучу времени, и фантазия на исходе...