解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題
網(wǎng)上有很多處理字符編碼的解決方案,在此,我站著前人的肩膀上作自己的總結(jié)。
在我看來,出現(xiàn)亂碼問題的解決方法無非就是在3個(gè)地方進(jìn)行編碼設(shè)置:
1.HTML、JSP等前端頁面;
2.后臺(tái)servlet中request和response對(duì)象;
3.服務(wù)器配置文件。
1.HTML、JSP等前端頁面,出現(xiàn)編碼首先看前端某個(gè)頁面的Meta標(biāo)簽是否正確設(shè)置了編碼,這個(gè)Meta標(biāo)簽也就是頁面的頭部
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
2.后臺(tái)的request和response的設(shè)置
2-1.當(dāng)后臺(tái)接收到URL請(qǐng)求之后,如果沒有對(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開發(fā)中字符編碼出現(xiàn)亂碼的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java8新特性之重復(fù)注解(repeating annotations)淺析
這篇文章主要介紹了Java8新特性之重復(fù)注解(repeating annotations)淺析,這個(gè)新特性只是修改了程序的可讀性,是比較小的一個(gè)改動(dòng),需要的朋友可以參考下2014-06-06
Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析
本文將探討如何在Java中有效地應(yīng)對(duì)這些挑戰(zhàn),介紹一種強(qiáng)大的工具并發(fā)Map,它能夠幫助您管理多線程環(huán)境下的共享數(shù)據(jù),確保數(shù)據(jù)的一致性和高性能,深入了解Java中的并發(fā)Map實(shí)現(xiàn),包括ConcurrentHashMap和ConcurrentSkipListMap,及相關(guān)知識(shí)點(diǎn)2023-09-09
Java基礎(chǔ)詳解之集合框架工具Collections
這篇文章主要介紹了Java基礎(chǔ)詳解之集合框架工具Collections,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04
Spring負(fù)載均衡LoadBalancer使用詳解
這篇文章主要介紹了Spring負(fù)載均衡LoadBalancer使用詳解,Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客戶端負(fù)載均衡器, 用來替代Ribbon,Spring官方提供了兩種客戶端都可以使用loadbalancer,需要的朋友可以參考下2023-11-11
java并發(fā)容器CopyOnWriteArrayList實(shí)現(xiàn)原理及源碼分析
這篇文章主要為大家詳細(xì)介紹了java并發(fā)容器CopyOnWriteArrayList實(shí)現(xiàn)原理及源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解
這篇文章主要介紹了SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
springboot整合webservice使用簡(jiǎn)單案例總結(jié)
WebService是一個(gè)SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語言,平臺(tái)等,可以實(shí)現(xiàn)不同的語言間的相互調(diào)用,下面這篇文章主要給大家介紹了關(guān)于springboot整合webservice使用的相關(guān)資料,需要的朋友可以參考下2024-07-07
Spring?boot?easyexcel?實(shí)現(xiàn)復(fù)合數(shù)據(jù)導(dǎo)出、按模塊導(dǎo)出功能
這篇文章主要介紹了Spring?boot?easyexcel?實(shí)現(xiàn)復(fù)合數(shù)據(jù)導(dǎo)出、按模塊導(dǎo)出,實(shí)現(xiàn)思路流程是準(zhǔn)備一個(gè)導(dǎo)出基礎(chǔ)填充模板,默認(rèn)填充key,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09

