我的 $_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
只是。
什么?我只是不知道这是否是一件好事......例如,如果我使用“#º#”作为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);
}
编码得到确认,我已经正确提出了消息。