Проблемы с кодировкой в PHP @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 12 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Заголовок сообщения: Проблемы с кодировкой в PHP
Сообщение Добавлено: 7 Июль 2008, 10:39:13 
У меня имеется куча файлов, сгенерированных утилитой Microsoft - subinacl, которая собирает права доступа к сетевым ресурсам. И мне нужно пропарсить эти файлы посредством PHP. Проблема - в неизвестной кодировке получаемого файла. Пробовал UTF-16, UCS-2 (каждый символ в файле занимает 2 байта). Все получается, но заглавные русские буквы не декодируются (получаются спец.символы), а заодно и пробелы между русскими буквами.

Декодирую просто - iconv( 'UCS-2', 'cp1251', $str ).

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

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 7 Июль 2008, 10:52:44 
subinacl при использовании ключа /output пишет в UTF-16 (little-endian) (см. BOM)
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 7 Июль 2008, 11:00:30 
угу... я это тоже откопал уже... только вот iconv, собака, понимает только UTF-16 и UTF-16BE, а вот LE напрочь отказывается...

P.S. равно как и mb_convert_encoding()…

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 7 Июль 2008, 11:19:54 
BOM отрезал перед преобразованием?
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 7 Июль 2008, 11:37:08 
Crazy, да

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 7 Июль 2008, 11:42:34 
А может такое быть, что iconv и mb_ не понимает UCS-2LE или UTF-16LE? Apache стоит на Solaris 10

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 7 Июль 2008, 12:36:39 
Современные версии должны понимать.
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 7 Июль 2008, 13:09:08 
Ну дык... должны... апача вторая стоит, PHP - 5. Нифига не помогает, придется самому конвертер писать или искать.

P.S. проверил на 2-х хостингах, разных, не работает. Спотыкается, как только пишешь UTF-16LE или UCS-2LE, работает, но криво при указании UTF-16 или UCS-2.

Значит, не в настройках Apache и PHP дело. То ли руки кривые, то ли одно из двух.

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 7 Июль 2008, 14:16:08 
Konyukhov, hint: iconv -- отдельная библиотека.
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 7 Июль 2008, 14:29:11 
Crazy, в курсе... я сейчас добиваю mb_, т.к. по скорости обработки она существенно обгоняет iconv, а парсить мне много нужно.

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 7 Июль 2008, 14:59:05 
Победил. Помогло mb_convert_encoding(file_get_contents(…)), т.е. не нужно было сначала откусывать BOM, и все заработало с обычной UTF-16. А с откусанным BOM-ом как раз и работает криво. Вот так вот :beer:

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 7 Июль 2008, 16:45:48 
Если используешь "просто" UTF-16, то откусывать BOM, очевидно, нельзя. :)
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 12 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100