解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題
網(wǎng)上有很多處理字符編碼的解決方案,在此,我站著前人的肩膀上作自己的總結(jié)。
在我看來,出現(xiàn)亂碼問題的解決方法無非就是在3個地方進(jìn)行編碼設(shè)置:
1.HTML、JSP等前端頁面;
2.后臺servlet中request和response對象;
3.服務(wù)器配置文件。
1.HTML、JSP等前端頁面,出現(xiàn)編碼首先看前端某個頁面的Meta標(biāo)簽是否正確設(shè)置了編碼,這個Meta標(biāo)簽也就是頁面的頭部
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
2.后臺的request和response的設(shè)置
2-1.當(dāng)后臺接收到URL請求之后,如果沒有對請求設(shè)置編碼,那么,接收到的請求內(nèi)容就會出現(xiàn)亂碼,這時,要分兩種情況考慮:
2-1-1.如果是Get請求,先獲取到URL請求中的參數(shù),例如:
String method = request.getParameter("method");
然后調(diào)用String對象完成參數(shù)編碼的轉(zhuǎn)化,
String parseMethod = new String(method.getBytes("ISO-8859-1"),"UTF-8");
這里的String的構(gòu)造方法有兩個參數(shù):將參數(shù)從字符串的形式轉(zhuǎn)化為字符數(shù)組作為第一個參數(shù),第二個參數(shù)是轉(zhuǎn)化后的字符串的編碼方式。
2-1-2.如果是Post請求,直接在獲取請求參數(shù)之前加上一句設(shè)置編碼的代碼,也就是調(diào)用request對象的設(shè)置編碼的setCharacterEncoding方法:
request.setCharacterEncoding("UTF-8");
2.2.當(dāng)后臺完成業(yè)務(wù)邏輯及持久化的操作后,這時可能需要向前臺輸出響應(yīng)流數(shù)據(jù),若輸出的內(nèi)容包含中文,就需要設(shè)置response對象的編碼,可以直接調(diào)用response對象的setContentType方法:
response.setContentType("text/html;charset=utf-8");
3.服務(wù)器配置文件的設(shè)置
當(dāng)前兩步設(shè)置好了之后依舊不奏效的情況下,還應(yīng)在服務(wù)器的安裝目錄下的conf文件夾下,比如我的是E:\tomcat7.0\conf,找到服務(wù)器的配置文件server.xml進(jìn)行設(shè)置:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
以上這篇解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MybatisPlus lambdaQueryWrapper中常用方法的使用
本文主要介紹了MybatisPlus lambdaQueryWrapper中常用方法的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java中關(guān)鍵字synchronized的使用方法詳解
synchronized關(guān)鍵字可以作為函數(shù)的修飾符,也可作為函數(shù)內(nèi)的語句,也就是平時說的同步方法和同步語句塊,下面這篇文章主要給大家介紹了關(guān)于Java中synchronized使用的相關(guān)資料,需要的朋友可以參考下2021-08-08