jqueryが中国語を提出して、文字化けが発生しました.
4867 ワード
必要に応じて、Jquery.Ajaxメソッドを使用してログインを実現します.しかし、バックグラウンドデータベースはgbkであるため、デバッグにより転送されたのはいつもutf-8であることが分かりました.
apacheのdefaultcharset設定かと思い始めました.マニュアルを見る:
Add Default Charrset コマンド
説明
応答内容が
構文
server config,virtual host,directory,httaccess
アイテムを上書き
FileInfo
状態
コア(C)
モジュール
コール
要求されたデータコードはクライアントによって完成されるはずです.
コンテント-Type:
アプリ/x-www-form-urlencoded
つまりurlencodedコードです.
王さんのブログに記載されているように、フォームの符号化とページコードの不一致を実現するためのこのようなhack手段は、フォームのdata符号化方式がdocument.chasetとaccept-charsetによって指定されていることがわかる.
一つに対して二つのコードを適用します. Acct-Charrsetは一致していますが、なぜサーバが受信したコードは違っていますか?
「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/
こんな一節がある
問題を解決する.server側にはいつもfrom=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で符号化処理をすればいいです.