『壹』 SSH環境 jsp url跳轉,帶中文參數亂碼問題 高手請進,謝謝
URL中編碼格式為ISO-8859-1,處理中文只需將編碼格式轉換ISO-8859-1
方法一:
http://xxx.do?ptname='我是中國人'
String strPtname = request.getParameter("ptname");
strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");
方法二(推薦使用):
<%@ page contentType="text/html;charset=gb2312" %>
<a href="ds.jsp?url=<%=java.net.URLEncoder.encode("編碼的是這里","GB2312")%>">點擊這里</a>
<%
//request.setCharacterEncoding("GBK");
if(request.getParameter("url")!=null)
{
str=request.getParameter("url");
str=java.net.URLDecoder.decode(str,"GB2312");
str=new String(str.getBytes("ISO-8859-1"));
out.print(str);
}
%>
==================================
public String chinatoString(String str)
{
String s=str;
try
{
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
}
catch(Exception e)
{
return s;
}
}
====================================================
function URLencode(sStr)
{
return escape(sStr).
replace(/\+/g, '%2B').
replace(/\"/g,'%22').
replace(/\'/g, '%27').
replace(/\//g,'%2F');
}
方法三:
如果用jstl的話,可以自己寫一個el的function,調用URLEncoder.encode來編碼。
IE預設對URL後面的參數是不編碼發送的,但是tomat預設是按ISO8859-1來進行URL解碼,因此才會出現上述錯誤。好的做法是:
1、在URL參數中確保用UTF-8編碼之,方法可以用js函數encodeURI(),或調用自定義的el function;
2、設置server.xml中的Connector熟悉URIEncoding="UTF-8",確保解碼格式與編碼格式統一;
方法四:
<script>
for(var i=0;i<document.links.length;i++){
document.links[i].href=encodeURI(document.links[i].href);
}
</script>
在action中,String s=request.getParameter("s");
s=new String(s.getBytes("iso-8859-1"),"gbk");
以上方法是收聚了一些網友所講的解決方法 。
『貳』 用JS將URL中的漢字編碼成GBK,怎麼弄
varGB2312UnicodeConverter={
ToUnicode:function(str){
returnescape(str).toLocaleLowerCase().replace(/%u/gi,'\u');
}
,ToGB2312:function(str){
returnunescape(str.replace(/\u/gi,'%u'));
}
};
用此方法試試。
個人覺得這個轉碼的工作最好還版是在接收端權做
『叄』 urlencoder.encode,"utf-8" 編碼 js什麼解碼
1、漢字出現在URL路徑部分的時候不需要編碼解碼;
2、使用encodeURI進行2次編碼;
3、在openModelDialog()打開的模式窗體里沒辦法用request.getParameter正確獲取參數;
客戶端和伺服器在傳遞數據時可以用過濾器filter解決字元編碼問題,但filter只能解決post方式提交的數據。對於get方式,可以使用兩次encodeURI(encodeURI(「中文」))並在伺服器中使用URLDecoder.decode(「中文」,
"UTF-8");
今天用Ajax校驗數據時也遇到這個問題,盡管頁面、類和web容器都統一了字元編碼,提交的數據依然是亂碼,所以就採用了2次encodeURI()編碼方式,亂碼問題就解決了。
在頁面中:
/exportExcel.topinfo?ls="+encodeURI(encodeURI(_tmplsgx))+"&zt="+encodeURI(encodeURI(_tmpzt))
在action中
String ls=request.getParameter("ls");
ls = new String(ls.getBytes("iso-8859-1"),"utf-8");
ls = java.net.URLDecoder.decode(ls,"UTF-8");
這樣亂碼就解決了。
『肆』 js 傳值url 亂碼問題
JS是UTF-8的,那你接收的文件是不是GB類型的?兩者語言不一致,導致出現亂碼。專
我剛調試完自己寫的類似ajax的一段屬JS。
ajax({
url:"http://",
method:'post',
type:"gb2312",
success:function(){...}
})
這里多了「type:gb2312」,就是告訴ajax,提交類型為非UTF-8類型,在提交的時候就可以將中文字元通過VBurlencode進行轉換。比將「中國」轉換成「%D6%D0%B9%FA」,而非escape("中文文字")。