一:請求的亂碼問題
對於jsp想servelt傳遞的表單提交的值時:會出現中文亂碼問題
我們要知道tomcat提交方式有倆種:get/post
jsp中的pageencoding指的是:jsp編譯成servelt的編碼格式
第一種解決亂碼:修改tomcat的server.xml的配置檔案(不使用,僅作為知識點,平台編碼不要改)
connectiontimeout="20000"
redirectport="8443"
uriencoding="utf-8"/> //預設iso8859-1
第二種解決亂碼:
我們將請求的編碼可以以我們想要的編碼解碼出來:
如中文支援有gbk,utf-8 在設定pageencoding=「utf-8」時
可以通過request.setcharacterencoding("utf-8");要對應
此時在servelt拿到的前台資料將是正確的(中文亂碼解決)
第三種:通過配置web.xml檔案和request.setcharacterencoding組合(便於使用者修改)
@override
public void init(servletconfig config) throws servletexception
req.setcharacterencoding(charset);
string name = req.getparameter("name");
web.xml配置:
character
utf-8
第四種方法:
由tomcat編碼iso-8859-1,當servelt拿到資料後是這樣的編碼:中文-----(pageencoding=「utf-8」)---位元組陣列------(iso8859-1)---亂碼字串,必須先用iso
8859-1 重新編碼成位元組陣列在用utf-8解碼成字串。
我們的步驟:
亂碼字串-----(iso8859-1)---位元組陣列------(utf-8)---中文
**:前提:jsp頁面的pageencoding=「utf-8」對應new string(buf,"utf-8")
2:doget方法( 該方法不能適用所有漢字情況 不建議採用 ) 不會有content-type協議頭
使用上面的第四種方法(常用post方式)
二:響應的頁面亂碼格式
當我們請求的亂碼解決時,如果**介面還存在 亂碼。
是由於http協議的contenttype沒有指定編碼格式
這個告訴瀏覽器以什麼編碼解析並顯示在介面上
response.setcontenttype(「text/html charset=utf-8」)即可
response. setcharactencoding(「utf-8」)也可以設定編碼 但是必需有上一句才能實現,可以這樣設定:
response.setcontenttype(「text/html);response. setcharactencoding(「utf-8」)。
同時有編碼時:倆者的值可覆蓋(順序後者生效)。
注意:
設定必須在**頁面操作之前
當沒有設定contenttype時, 瀏覽器有預設的顯示編碼:火狐gbk。360自動檢測(根據你的編碼格式)。
亂碼問題 Qt中文亂碼問題
接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...
修改亂碼的問題
1.在資料庫中要設定字符集為 utf 8 2.頁面上要加入 這句話。3.在list查詢頁面中加上 request.setcharacterencoding utf 8 response.setcharacterencoding utf 8 這個。4.寫乙個過濾器,在web.xml中加入這樣的配置 s...
MYSQL的亂碼問題
總結了一下幾個處理方法 1 改變資料庫的預設編碼配置,在mysql的安裝目錄中,找到my.ini,修改預設編碼為 default character set utf8 2 建立資料庫時,create database ms db character set utf8 collate utf8 gen...