3

$_POST/$_REQUEST データに問題があります。まだ utf8_encoded のままのようです。

次の条件で、従来の ajax ポスト リクエストを送信しています。

  • oXhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
  • utf8-nobom 形式で保存された js ファイル
  • <header>htmlタグ設定のメタタグ
  • utf-8-nobom 形式で保存された php ファイルも
  • encodeURIComponent使用されていますが、使用せずに試してみましたが、同じ結果が得られます

OK、すべて問題ありません。データベースも 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

1バイトのutf-8文字にはビット7(8ビット)が設定されていないため、10111010はutf-8ではなく、ファイルはおそらくISO-8859-1でエンコードされています。

于 2012-06-17T02:51:09.070 に答える