php收到的UTF-8数据未被解码

时间:2012-06-17 02:27:45

标签: php ajax encoding utf-8

我的$ _POST / $ _ REQUEST数据遇到了一些麻烦,它们看起来仍然是utf8_encoded。

我发送传统的ajax帖子请求,在这些条件下:

  • oXhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
  • 以utf8-nobom格式保存的js文件
  • html <header>代码设置
  • 中的元标记
  • 以utf-8-nobom格式保存的php文件
  • encodeURIComponent被使用,但我尝试了没有,它给出了相同的结果

好的,所以一切都很好:数据库也在utf8中,并以这种方式接收,页面显示良好。

但是当我收到字符“º”时(通过$_REQUEST$_POST),其二进制表示为11000010 10111010,而“º”在php中硬编码(utf8 ...)二进制表示仅为10111010

跆拳道?我只是不知道这是不是一件好事...例如,如果我使用“#º#”作为explode php函数的分隔符,它将不会被检测到,这实际上是导致我在这里的问题。

任何帮助都会像往常一样非常感谢,非常感谢您的时间。 最佳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);
}

编码得到确认,我正确地提出了这个消息。

1 个答案:

答案 0 :(得分:2)

单字节utf-8字符没有设置第7位(8位),因此10111010不是utf-8,您的文件可能以ISO-8859-1编码。