jqueryが中国語を提出して、文字化けが発生しました.

4867 ワード

必要に応じて、Jquery.Ajaxメソッドを使用してログインを実現します.しかし、バックグラウンドデータベースはgbkであるため、デバッグにより転送されたのはいつもutf-8であることが分かりました.
apacheのdefaultcharset設定かと思い始めました.マニュアルを見る:
Add Default Charrset コマンド
説明
応答内容がtext/plainまたはtext/htmlである場合、HTTP応答ヘッダに追加されるデフォルトの文字セット.
構文AddDefaultCharset On|Off|charset標準値AddDefaultCharset Offスコープ
server config,virtual host,directory,httaccess
アイテムを上書き
FileInfo
状態
コア(C)
モジュール
コール
         text/plain text/html ,      HTTP            。              <meta>        ,                    。AddDefaultCharset Off        。AddDefaultCharset On    Apache        iso-8859-1 。         IANA               charset 。   :



AddDefaultCharset utf-8



AddDefaultCharset           :                  ,               。                          (       CGI  ),                              。     :                 ,                                。

http://blog.csdn.net/laruence/article/details/2301395
ここで言っているのは応答内容のコードはこことは関係がないということです.
要求されたデータコードはクライアントによって完成されるはずです.
コンテント-Type:
アプリ/x-www-form-urlencoded
つまりurlencodedコードです.
  :  URL encode        ASCII   (    ),                  ( :  ,   )    URL encode,        ,       url             ,      url              ;
:URL encode ? , , GBK, UTF-8, , , url javascript URL encode, url , URL encode, get 。 URL encode, url ASCII , iso-8859-1 。 , get , , url , URL encode, : iso-8859-1 101010..... , iso-8859-1 , URL encode 。
その文字に基づいてエンコードするべきです.
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
判断を下す
王さんのブログに記載されているように、フォームの符号化とページコードの不一致を実現するためのこのようなhack手段は、フォームのdata符号化方式がdocument.chasetとaccept-charsetによって指定されていることがわかる.
一つに対して二つのコードを適用します. Acct-Charrsetは一致していますが、なぜサーバが受信したコードは違っていますか?
document.charset

"GBK"
Dcument.chaset
「UTF-8」
 
 
ここの値は、ブラウザがmetaで指定した値を自分の符号化セットにマッピングして取得します.
しかし、
Appacheがdefaultcharsetを指定しない場合、ページコードはページ自体のmetaタグで指定されます.
Appacheが指定すると、ページ中のmetaタグで指定された符号化は無視されますが、スクリプトは直接header符号化方式でクライアントに与えられます.
実際の挙動は、通常ユーザブラウザの設定に依存します.
エンコード処理もブラウザで行われます.---NIH
 
はい.フォームのコードは大体分かりました.ここでの問題はJquery.Ajax方法で提出されたデータで、複数回のテストによって発見されました.バックグラウンドはmb_です.convert_.encoding(,from='UTF-8')でやっても正しいです.他をすると間違いです.おかしいと思います.木があります.だからJqueryがやった鬼だと疑っています.マニュアルを見る:
http://api.jquery.com/jQuery.ajax/
こんな一節がある
contentTypeString

Default: 'application/x-www-form-urlencoded'

When sending data to the server, use this content-type. Default is "application/x-www-form-urlencoded", which is fine for most cases. If you explicitly pass in a content-type to $.ajax() then it'll always be sent to the server (even if no data is sent). Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side.
これです....
問題を解決する.server側にはいつもfrom=utf 8で符号化処理をすればいいです.