3

我的 $_POST/$_REQUEST 数据有一些问题,它们似乎仍然是 utf8_encoded。

在这些情况下,我正在发送传统的 ajax 发布请求:

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

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

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

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

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

编码得到确认,我已经正确提出了消息。

4

1 回答 1

2

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

于 2012-06-17T02:51:09.070 回答