我對$ _POST/$ _ REQUEST數據有些麻煩,它們看起來仍然是utf8_encoded。php收到的UTF-8數據沒有解碼
我送傳統的ajax post請求,在這些條件:
oXhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
在HTML
- js文件保存在UTF8-nobom格式
- 元標籤
- PHP文件保存在UTF-8-nobom格式下
encodeURIComponent
被使用,但我試過沒有,它給出了相同的結果
<header>
標籤設置
好的,所以一切都很好:數據庫也在utf8中,並以這種方式接收它,頁面顯示良好。
但是,當我收到例如字符「º」(通過$_REQUEST
或$_POST
),它的二進制表示形式爲11000010 10111010
,而「º」在PHP硬編碼(UTF8 ...)二進制表示只有10111010
。
wtf?我只是不知道這是不是一件好事......例如,如果我使用「#º#」作爲explode
php函數的分隔符,它將不會被檢測到,這實際上是導致問題的原因我在這。
任何幫助將像往常一樣非常感謝,非常感謝你的時間。 Best 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);
}
編碼得到了證實,我有消息引發了正常。
使用'mb_check_encoding()'檢查輸入時會發生什麼:http://www.php.net/manual/en/function.mb-check-encoding.php –
單字節utf-8字符沒有位7(八位)如此設置'10111010'不是utf-8 – Musa
@PhpMyCoder確認後,檢查編輯 – Sebas