java頁(yè)面中文亂碼的解決辦法
更新時(shí)間:2013年11月11日 14:25:47 作者:
做java開(kāi)發(fā)的朋友碰到最多的就是中文亂碼這個(gè)問(wèn)題了,下面介紹頁(yè)面提交時(shí)與url中文亂碼的一些解決辦法
在頁(yè)面提交到tomcat亂碼 解決方法是在tomcat/conf/server.xml中進(jìn)行配置
以tomcat6.0.32為例,需將以下代碼:
Xml代碼
<Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改為:
Xml代碼
<Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"URIEncoding="UTF-8"/>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
如果tomcat前端有Apache或是Nginx轉(zhuǎn)發(fā),則還需將:
Xml代碼
<Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改為:
Xml代碼
<Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
中文url亂碼在這里介紹一種解決方法,可以在任何應(yīng)用部署環(huán)境下通用。此方法分兩步:
1、在客戶端用escape(encodeURIComponent(fieldValue))方法編碼,例如:
title=escape(encodeURIComponent(title)); //這是js里的函數(shù)
url="<%=request.getContextPath()%>/print/printList!printTable.action?title="+title;
2、在服務(wù)端用java.net.URLDecoder.decode(getRequest().getParameter("title"),"UTF-8"),進(jìn)行解碼。
要在這兩個(gè)url地址中傳中文,必須加編碼,然后再解碼。
編碼:encodeURI(encodeURI("包含中文的串"))
解碼:java.net.URLDecoder.decode("需要解碼的串","utf-8");
JSP頁(yè)面亂碼通常只要在頁(yè)面開(kāi)始地方用下面代碼指定字符集編碼即可。如果還不行,那么請(qǐng)用下面這句話來(lái)轉(zhuǎn)換
str=new String(str.getBytes("ISO-8859-1"),"頁(yè)面編碼方式");
JAVA在網(wǎng)絡(luò)傳輸中使用的編碼是"ISO-8859-1",故在輸出時(shí)需要進(jìn)行轉(zhuǎn)化,如:
String str=new String(str.getBytes("開(kāi)發(fā)環(huán)境編碼"),"ISO-8859-1");
經(jīng)過(guò)網(wǎng)絡(luò)編碼后的中文,要正確顯示在頁(yè)面上必須要用類似于
Stirng str=new String(str.getBytes("ISO-8859-1"),"開(kāi)發(fā)環(huán)境編碼");
這樣的方式來(lái)解碼
以tomcat6.0.32為例,需將以下代碼:
Xml代碼
復(fù)制代碼 代碼如下:
<Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改為:
Xml代碼
復(fù)制代碼 代碼如下:
<Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"URIEncoding="UTF-8"/>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
如果tomcat前端有Apache或是Nginx轉(zhuǎn)發(fā),則還需將:
Xml代碼
復(fù)制代碼 代碼如下:
<Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改為:
Xml代碼
復(fù)制代碼 代碼如下:
<Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
中文url亂碼在這里介紹一種解決方法,可以在任何應(yīng)用部署環(huán)境下通用。此方法分兩步:
1、在客戶端用escape(encodeURIComponent(fieldValue))方法編碼,例如:
復(fù)制代碼 代碼如下:
title=escape(encodeURIComponent(title)); //這是js里的函數(shù)
url="<%=request.getContextPath()%>/print/printList!printTable.action?title="+title;
2、在服務(wù)端用java.net.URLDecoder.decode(getRequest().getParameter("title"),"UTF-8"),進(jìn)行解碼。
要在這兩個(gè)url地址中傳中文,必須加編碼,然后再解碼。
復(fù)制代碼 代碼如下:
編碼:encodeURI(encodeURI("包含中文的串"))
解碼:java.net.URLDecoder.decode("需要解碼的串","utf-8");
JSP頁(yè)面亂碼通常只要在頁(yè)面開(kāi)始地方用下面代碼指定字符集編碼即可。如果還不行,那么請(qǐng)用下面這句話來(lái)轉(zhuǎn)換
復(fù)制代碼 代碼如下:
str=new String(str.getBytes("ISO-8859-1"),"頁(yè)面編碼方式");
JAVA在網(wǎng)絡(luò)傳輸中使用的編碼是"ISO-8859-1",故在輸出時(shí)需要進(jìn)行轉(zhuǎn)化,如:
復(fù)制代碼 代碼如下:
String str=new String(str.getBytes("開(kāi)發(fā)環(huán)境編碼"),"ISO-8859-1");
經(jīng)過(guò)網(wǎng)絡(luò)編碼后的中文,要正確顯示在頁(yè)面上必須要用類似于
復(fù)制代碼 代碼如下:
Stirng str=new String(str.getBytes("ISO-8859-1"),"開(kāi)發(fā)環(huán)境編碼");
這樣的方式來(lái)解碼
您可能感興趣的文章:
- 解決javaWEB中前后臺(tái)中文亂碼問(wèn)題的3種方法
- java中form以post、get方式提交數(shù)據(jù)中文亂碼問(wèn)題總結(jié)
- java壓縮zip文件中文亂碼問(wèn)題解決方法
- java中Filter過(guò)濾器處理中文亂碼的方法
- java 頁(yè)面url傳值中文亂碼的解決方法
- Java讀寫(xiě).properties文件解決中文亂碼問(wèn)題
- JAVA POST與GET數(shù)據(jù)傳遞時(shí)中文亂碼問(wèn)題解決方法
- java 逐行讀取txt文本如何解決中文亂碼
- Java 解決讀寫(xiě)本地文件中文亂碼的問(wèn)題
- Java中文亂碼解決方案全解析,讓你的程序“說(shuō)人話”!
相關(guān)文章
解決gateway報(bào)netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemor
這篇文章主要介紹了解決gateway報(bào)netty堆外內(nèi)存溢出io.netty.util.internal.OutOfDirectMemoryError,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Mybatis-plus實(shí)現(xiàn)主鍵自增和自動(dòng)注入時(shí)間的示例代碼
這篇文章主要介紹了Mybatis-plus實(shí)現(xiàn)主鍵自增和自動(dòng)注入時(shí)間的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07springboot集成mybatisplus的詳細(xì)步驟
MyBatis-Plus (opens new window)(簡(jiǎn)稱 MP)是一個(gè) MyBatis (opens new window)的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,這篇文章主要介紹了springboot四步集成mybatisplus,需要的朋友可以參考下2022-10-10如何擴(kuò)展Spring Cache實(shí)現(xiàn)支持多級(jí)緩存
這篇文章主要介紹了如何擴(kuò)展Spring Cache實(shí)現(xiàn)支持多級(jí)緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11SpringBoot + SpringSecurity 環(huán)境搭建的步驟
這篇文章主要介紹了SpringBoot + SpringSecurity 環(huán)境搭建的步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05