gbk編碼下ajax提交亂碼的解決

2021-08-30 11:45:55 字數 517 閱讀 5956

本來想整個專案都用gbk編碼應該不會出現亂碼的,但是不明白jquery為啥不能修改編碼,只能用utf-8. 提交過去就是亂碼,正當編碼流程我想是這樣的:

ajax(utf-8)-->編碼過濾器(gbk)-->action中顯示為亂碼

起初的解決辦法:

在action中先用gbk進行編碼然後在用utf-8解碼

感覺沒有問題啊,結果偶數個沒有問題正常顯示,奇數還是出現亂碼。很是奇怪。

查了很多資料加上我的思考得出的結果:

utf-8編碼3個位元組表示,而gbk用倆個位元組表示,解碼的時候偶數個漢字總能夠在gbk中找到別的字和這個碼匹配所有這個位元組碼值沒有發生變化,奇數個漢字是奇數乘以奇數還是奇數所有會剩乙個位元組沒有辦法在gbk中找到字匹配,gbk就用?代替了這個位元組碼的值,所有出現亂碼。

目前的解決辦法:

修改jquery原始碼,對引數再次編碼,也就是對引數進行了兩次編碼,提交到伺服器後自動進行了一次解碼,然後再手動用utf-8進行解碼,從而避免了亂碼。

也許是本人比較愚鈍想了半天才想明白。

gbk編碼下ajax提交亂碼的解決

本來想整個專案都用gbk編碼應該不會出現亂碼的,但是不明白jquery為啥不能修改編碼,只能用utf 8.提交過去就是亂碼,正當編碼流程我想是這樣的 ajax utf 8 編碼過濾器 gbk action中顯示為亂碼 起初的解決辦法 在action中先用gbk進行編碼然後在用utf 8解碼 感覺沒有...

form表單提交以gbk編碼

post提交 這裡我們使用編碼為utf 8的頁面做提交 提交後為http的內容為 fname e5 a5 bd如果指定 accept charset 為gbk 提交的內容為 fname ba c3get 提交方式 同樣適用utf 8頁面編碼提交資料 由於是get形式提交,引數會在請求的url上展示 ...

關於ajax提交中文亂碼的問題

幾天前,在用jquery以及extjs時發現,如果頁面採用pageencoding gbk 編碼,在使用這兩個js框架做ajax請求時,傳遞的中文引數就會變成亂碼。後來發現原來是這兩者的核心js中對於ajax請求都採用了預設的轉碼。此外,如果在所開發的系統中也採用的過濾器轉碼的話,乙個請求在進行了多...