jsp servelt的亂碼問題解決

2021-07-15 02:41:18 字數 1715 閱讀 2843

一:請求的亂碼問題

對於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...