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