| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > Проблемы с кодировкой при получении данных. |
| Автор: Alagert 22.10.2009, 15:43 | ||||||
| Всем доброго времени суток! Выпало мне заниматься поддержкой одного решения на PHP в силу отпуска одного из сотрудников и, как водится, в это самое время полезли проблемы В целом задача выглядит следующим образом: спросить сервер по указанному урлу, получить от него ответ в виде строки текста:
Распарсить ее. Все выглядит просто Собственно код:
В результате имеем следующий ответ:
Вопрос: почему части ответа стали представляться в ASCII? Как правильно обработать эту ситуацию. ЗЫ. В PHP нуб |
| Автор: krypt3r 23.10.2009, 06:59 |
| Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Юзайте UTF-8 only |
| Автор: sTa1kEr 23.10.2009, 10:01 |
Алгоритм работы http://php.net/mb_detect_encoding следующий: 1. Функция получает порядок которому будет следовать при определении кодировки. Этот порядок можно задать при помощи http://ru.php.net/mb-detect-order или вторым параметром самой функции. 2. Берет следующую по списку кодировку и проверяет все ли символы из заданной строки валидны для этой кодировки. 2a. Если все символы валидны, то возвращает эту кодировку. 2b. Если хотя бы один символ не валиден , то идет к пункту 2. А так как по умолчанию порядок кодировок 'ASCII, JIS, UTF-8, EUC-JP, SJIS', то эта функция для латиницы будет возвращать ASCII (т.к. http://www.ietf.org/rfc/rfc3629.txt все символы US-ASCII валидны так же и для UTF-8). Это зависит от того, чего вы хотите добиться. PS Мндэ. Порой в вики такую ересь понапишут =\ |