Solaris上中文請求亂碼
Solaris上中文請求亂碼
專案概況:
過濾器使用GBK處理中文
對於漢字,使用Post方式沒有亂碼,使用get方式在Solaris平臺上的Weblogic伺服器出現亂碼。
環境
WinXP+Tomcat5.5.28
OS 名稱: Microsoft Windows XP Professional
OS 版本: 5.1.2600 Service Pack 3 Build 2600
沒有亂碼現象出現。
Solaris平臺出現亂碼
root@portalA # locale
LANG=zh_CN.GBK
LC_CTYPE=”zh_CN.GBK”
LC_NUMERIC=”zh_CN.GBK”
LC_TIME=”zh_CN.GBK”
LC_COLLATE=”zh_CN.GBK”
LC_MONETARY=”zh_CN.GBK”
LC_MESSAGES=”zh_CN.GBK”
LC_ALL=
root@portalA # uname -a
SunOS portalA 5.10 Generic_120011-14 sun4u sparc SUNW,Sun-Fire-15000
root@portalA #
上中文出現亂碼;
解決方法如下:
1、 前臺傳值的時間,對URL進行編碼
2、 後臺獲取時,採用URLDecoder類進行解碼而已
JavaScript 中的處理
function printImag(){
var url = “/JsjxzlpgAction.do?method=queryPrint&yxsh=”+”中文漢字”;
url=encodeURI(encodeURI(url));
window.open(url, ‘資料表’, “location=no,menubar=no,resizable=yes,
scrollbars=yes,status=yes,titlebar=no,toolbar=no”);
}
測試程式碼:
<html>
<body>
<script type=”text/javascript”>
var url=”/JsjxzlpgAction.do?method=queryPrint&yxsh=”+”中文漢字”;
document.write(encodeURI(url)+ “<br />”);
document.write(encodeURI(encodeURI(url))+”<br />”);
document.write(encodeURI(“,/?:@&=+$#”));
</script>
</body>
</html>
輸出如下:
/JsjxzlpgAction.do?method=queryPrint&yxsh=%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97
/JsjxzlpgAction.do?method=queryPrint&yxsh=%25E4%25B8%25AD%25E6%2596%2587%25E6%25B1%2589%25E5%25AD%2597
,/?:@&=+$#
encodeURI函式的再一次處理就是對特殊字元,例如%編碼成%25
Java 中的處理
String yxsh =
java.net.URLDecoder.decode (request.getParameter(“yxsh”) , “UTF-8″);
使用Java
String str = “/JsjxzlpgAction.do?method=queryPrint&yxsh=” + “中文漢字”;
String encoding = “utf-8″;
String strEnc=java.net.URLEncoder.encode (str, encoding);
System.out .println(strEnc);
System.out .println(java.net.URLDecoder.decode (strEnc,encoding));
輸出結果如下:
%2FJsjxzlpgAction.do%3Fmethod%3DqueryPrint%26yxsh%3D%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97
/JsjxzlpgAction.do?method=queryPrint&yxsh=中文漢字
進一步測試:
String str2=”%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97″;
System.out .println(java.net.URLDecoder.decode (str2,encoding)); str2=”%25E4%25B8%25AD%25E6%2596%2587%25E6%25B1%2589%25E5%25AD%2597″;
System.out .println(java.net.URLDecoder.decode (str2,encoding));
輸出結果如下:
中文漢字
%E4%B8%AD%E6%96%87%E6%B1%89%E5%AD%97
可見java.net.URLDecoder.decode (str2,” utf-8”)的本質意義就是將%XX%XX的字串表示按utf-8來進行解碼。
當時冒似是在URL後面帶上了這樣的引數:
“parm=《%=java.net.URLEncoder.encode(parm,”utf-8″)%>”
然後在JAVA裡取出來:
String mytext2 = java.net.URLDecoder.decode(request.getParameter(PARM), “utf-8″);
最終通過這種方式進行了處理。
主要是關注encodeURI函式和URLEncoder和URLDecoder類,來進行資料處理。
Reference
http://bbs.firnow.com/dview37t16452.html
http://hi.baidu.com/%B4%FA%CD%E9/blog/item/b195d554158ba45f574e005e.html
http://www.javaeye.com/topic/456553
相關文章
- requests請求返回內容 中文亂碼問題
- GET請求引數為中文時亂碼分析
- 解決URL請求中的中文亂碼問題
- jboss get請求中文亂碼問題的解決[zt]
- Postman 使用 Get 請求 URL 傳參中文亂碼的問題Postman
- Spring MVC的Post請求引數中文亂碼的原因&處理SpringMVC
- android客戶端向伺服器傳送請求中文亂碼的問Android客戶端伺服器
- TOMCAT 請求資料編碼亂碼 問題Tomcat
- secure crt(從windows)連線solaris,中文亂碼處理辦法Windows
- 傳送請求時,url 出現亂碼錯誤
- mysql中文亂碼MySql
- secureCRT中文亂碼Securecrt
- oracle 中文亂碼Oracle
- PHP中文亂碼PHP
- gedit中文亂碼
- gitk中文亂碼Git
- plsql中文亂碼SQL
- URL請求不能解決中文請求的問題
- SecureCRT遠端登入solaris 10系統,字元介面中文亂碼問題Securecrt字元
- java web 中文亂碼JavaWeb
- JS cookie 中文亂碼JSCookie
- iOS請求URL 中文轉譯iOS
- Python使用request包請求網頁亂碼解決方法Python網頁
- Servlet中request請求Get和Post方法以及亂碼解決Servlet
- JSP中文亂碼問題終極解決方案(上)JS
- Get提交方式中文亂碼
- JD-GUI中文亂碼GUI
- EasyUI 中文亂碼問題UI
- oracle中文顯示亂碼Oracle
- RHEL中文亂碼解決
- HttpClient 解決中文亂碼HTTPclient
- MSSQL中文亂碼問題SQL
- Java 中文 亂碼問題Java
- jsp 中文亂碼急救JS
- include jsp 中文亂碼JS
- telnet AIX 中文亂碼AI
- MySQL解決中文亂碼MySql
- java,awt,中文方框,中文亂碼10/16Java