java頁面中文亂碼的解決辦法
更新時間:2013年11月11日 14:25:47 作者:
做java開發(fā)的朋友碰到最多的就是中文亂碼這個問題了,下面介紹頁面提交時與url中文亂碼的一些解決辦法
在頁面提交到tomcat亂碼 解決方法是在tomcat/conf/server.xml中進行配置
以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"),進行解碼。
要在這兩個url地址中傳中文,必須加編碼,然后再解碼。
編碼:encodeURI(encodeURI("包含中文的串"))
解碼:java.net.URLDecoder.decode("需要解碼的串","utf-8");
JSP頁面亂碼通常只要在頁面開始地方用下面代碼指定字符集編碼即可。如果還不行,那么請用下面這句話來轉(zhuǎn)換
str=new String(str.getBytes("ISO-8859-1"),"頁面編碼方式");
JAVA在網(wǎng)絡(luò)傳輸中使用的編碼是"ISO-8859-1",故在輸出時需要進行轉(zhuǎn)化,如:
String str=new String(str.getBytes("開發(fā)環(huán)境編碼"),"ISO-8859-1");
經(jīng)過網(wǎng)絡(luò)編碼后的中文,要正確顯示在頁面上必須要用類似于
Stirng str=new String(str.getBytes("ISO-8859-1"),"開發(fā)環(huán)境編碼");
這樣的方式來解碼
以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"),進行解碼。
要在這兩個url地址中傳中文,必須加編碼,然后再解碼。
復(fù)制代碼 代碼如下:
編碼:encodeURI(encodeURI("包含中文的串"))
解碼:java.net.URLDecoder.decode("需要解碼的串","utf-8");
JSP頁面亂碼通常只要在頁面開始地方用下面代碼指定字符集編碼即可。如果還不行,那么請用下面這句話來轉(zhuǎn)換
復(fù)制代碼 代碼如下:
str=new String(str.getBytes("ISO-8859-1"),"頁面編碼方式");
JAVA在網(wǎng)絡(luò)傳輸中使用的編碼是"ISO-8859-1",故在輸出時需要進行轉(zhuǎn)化,如:
復(fù)制代碼 代碼如下:
String str=new String(str.getBytes("開發(fā)環(huán)境編碼"),"ISO-8859-1");
經(jīng)過網(wǎng)絡(luò)編碼后的中文,要正確顯示在頁面上必須要用類似于
復(fù)制代碼 代碼如下:
Stirng str=new String(str.getBytes("ISO-8859-1"),"開發(fā)環(huán)境編碼");
這樣的方式來解碼
相關(guān)文章
Spring?AOP?后置通知修改響應(yīng)httpstatus方式
這篇文章主要介紹了Spring?AOP?后置通知修改響應(yīng)httpstatus方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Springboot?對接支付寶實現(xiàn)掃碼支付功能
本文介紹了如何在Spring?Boot項目中實現(xiàn)支付寶支付功能,包括沙箱環(huán)境配置、依賴引入、配置參數(shù)、訂單類定義、測試接口編寫等步驟,通過不同場景下的請求方式(PC端、二維碼、回調(diào)處理、定時查詢支付結(jié)果),展示了如何與支付寶API進行交互,感興趣的朋友一起看看吧2025-03-03
關(guān)于SpringBoot啟動速度慢的原因總結(jié)
這篇文章主要介紹了關(guān)于SpringBoot啟動速度慢的原因總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
關(guān)于JDK15的新特性之TextBlocks文本塊的引入和使用
這篇文章主要介紹了關(guān)于JDK15的新特性之文本塊的引入和使用,如果具有一種語言學(xué)機制,可以比多行文字更直觀地表示字符串,而且可以跨越多行,而且不會出現(xiàn)轉(zhuǎn)義的視覺混亂,那么這將提高廣泛Java類程序的可讀性和可寫性,需要的朋友可以參考下2023-07-07
springBoot集成redis的key,value序列化的相關(guān)問題
這篇文章主要介紹了springBoot集成redis的key,value序列化的相關(guān)問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
IDEA2020.1創(chuàng)建springboot項目(國內(nèi)腳手架)安裝lombok
這篇文章主要介紹了IDEA2020.1創(chuàng)建springboot項目(國內(nèi)腳手架)安裝lombok,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06

