2012-06-17 2 views
3

У меня возникли проблемы с моими данными $ _POST/$ _ REQUEST, они все еще выглядят utf8_encoded.Данные UTF-8, полученные php, не декодируются

Я посылаю обычные Аякса почтовые запросы, в этих условиях:

  • oXhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
  • JS-файл, сохраненный под формате utf8-nobom
  • мета-теги в HTML настройки <header> тегов
  • PHP файлы сохраняется также в формате utf-8-nobom
  • encodeURIComponent используется, но я пробовал без него и дает тот же результат

Хорошо, все в порядке: база данных также находится в utf8 и получает ее таким образом, страницы показывают хорошо.

Но когда я получаю символ «º», например (через $_REQUEST или $_POST), его двоичный represention является 11000010 10111010, в то время как «º» зашиты в PHP (utf8 ...) бинарное представление только 10111010.

wtf? Я просто не знаю, хорошо это или нет ... например, если я использую «# º #» в качестве разделителя функции php explode, он не будет обнаружен, и на самом деле это проблема, которая ведет я здесь.

Любая помощь будет, как обычно, высоко оценена, большое вам спасибо за ваше время. Лучшие rgds.

EDIT1: проверка против mb_check_encoding

if (mb_check_encoding($_REQUEST[$i], 'UTF-8')) { 
    raise("$_REQUEST is encoded properly in utf8 at index " . $i); 
} else { 
    raise(false); 
} 

Кодирование подтвердилось, у меня было сообщение воскресил должным образом.

+0

Что происходит, когда вы проверяете ввод с помощью 'mb_check_encoding()': http://www.php.net/manual/en/function.mb-check-encoding.php –

+2

однобайтных символов utf-8 не имеют бит 7 (восемь бит), поэтому '10111010' не является utf-8 – Musa

+0

@PhpMyCoder подтвержден, проверьте правильность – Sebas

ответ

2

Однобайтовые символы utf-8 не имеют бит 7 (восемь бит), поэтому 10111010 не является utf-8, ваш файл, вероятно, кодируется в ISO-8859-1.

+0

Спасибо, это привело меня к проверке не ввода, а кодировки «жестко закодированной» строки. Это был не utf-8, потому что он хранился под константой, сам хранился в включенном файле, который, как я думал, был закодирован ... – Sebas

Смежные вопросы