2013-09-16 3 views
0

Я пытаюсь обрабатывать данные, которые у меня есть с помощью curl, но у меня проблемы с кодировкой - я не могу найти правильный способ справиться с этим.php curl response encoding

Это текст, который я получил (в HEX) - «6B 64 6F 20 6D C3 A1», который должен оценивать строку «kdo má», но вместо этого он оценивает «kdo m ??» (На самом деле, последние два символа не знаки вопроса, но http://www.fileformat.info/info/unicode/char/c3/index.htm и http://www.fileformat.info/info/unicode/char/a1/index.htm)

Я не понимаю, почему некоторые символы являются 8bit и диакритические символы являются 16 бит, и как следует PHP знать, какой из них есть что, но в любом случае, как его декодировать?

+0

_ «Я не понимаю, почему некоторые символы имеют 8-битные и диакритические символы 16 бит» - потому что это [кодировка переменной ширины] (http: //en.wikipedia .org/wiki/Variable-width_encoding) ... – CBroe

+0

Вы, вероятно, получаете текст UTF-8, который использует расширенные ascii для расширенных кодовых последовательностей (более низкие 7 бит UTF-8 соответствуют 1: 1 с US-ASCII). Но вы, вероятно, сбрасываете этот текст UTF в другую оболочку charset, где UTF-8 hibit escapes не имеет никакого значения, например. изо-8859. –

ответ

0

не понимаю, почему некоторые символы являются 8bit и диакритические символы являются 16 бит

Скорее всего, потому что это UTF8 или, возможно, даже UTF16. И по умолчанию PHP предполагает наличие одного символа == один байт

и как должен PHP знать, какой из них, но так или иначе, как его декодировать?

Нет. Вы должны это рассказать. Проверьте mbstring: http://php.net/manual/de/book.mbstring.php или recode: http://php.net/manual/en/book.recode.php

+0

Я пробовал все, что нашел. utf8_encode/decode, функции mbstring, iconv ... но ничего не помогло. – user10099