首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS中文转换(UTF-8),中文乱码解决方法,url传递中文乱码解决

2012-10-09 
JS中文转换(UTF-8),中文乱码解决办法,url传递中文乱码解决js合成url时,如果参数是中文,传到struts2中会乱

JS中文转换(UTF-8),中文乱码解决办法,url传递中文乱码解决

js合成url时,如果参数是中文,传到struts2中会乱码,解决办法如下:
1.js文件中使用encodeURI()方法(必须套两层)。
login_name = encodeURI(encodeURI(login_name));??

2.action中URLDecoder解码
loginName = java.net.URLDecoder.decode(loginName,"UTF-8");
-------------------------------------------------

实际应用如下queryPrice()方法:

1)js代码:/*模糊查询价格策略*/function queryPrice(){var checkMoney = true;var textMoney = $("#textMoney");var textArea = $("#textArea");//地区错误提示位置/** * 点击查询,判断至少选择了一个面值,否则不能查询 */var obj = document.getElementsByName("money");for( var i=0; i<obj.length; i++){if(obj[i].checked){checkMoney = true;break;}else{checkMoney = false;}}if( ($("#Area_a").val() != 'no') && ($("#Area_b").val() != 'no') && checkMoney == true ){var checkText=$("#Area_b").find("option:selected").text();//###这里得到select被选中option的textvar Area_b_text = encodeURI(encodeURI(checkText));$("#form1").attr("action","priceStrategy_querAllPriceStrategy2?Area_b_text="+Area_b_text);$("#form1").submit();}else{textArea.html("<font color='red'>选择地区!</font>");textMoney.html("<br><font color='red'>至少选择一种面值!</font>");}}

?

?

2)jsp页面<table border=1 width="100%"><tr><td colspan="3">查询操作</td></tr><tr><td>地区:</td><td><select id="Area_a" name="Area_a" size="1" onchange="getAllCityOrProvince()"><c:choose><c:when test="${ Area_a == 'nei' }"><option value="no">==请选择==</option><option value="nei" selected="selected">省内</option><option value="wai">省外</option></c:when><c:when test="${ Area_a == 'wai' }"><option value="no">==请选择==</option><option value="nei">省内</option><option value="wai" selected="selected">省外</option></c:when><c:otherwise><option value="no" selected="selected">==请选择==</option><option value="nei">省内</option><option value="wai">省外</option></c:otherwise></c:choose></select><select id="Area_b" name="Area_b" size="1"><c:choose><c:when test="${ Area_b_text != null }"><option value="${ Area_b }">${ Area_b_text }</option></c:when><c:otherwise><option value="no">&nbsp;&nbsp;&nbsp;&nbsp;</option></c:otherwise></c:choose></select></td><td><span id="textArea"></span></td></tr><tr><td></td><td><input type="button" value=" 查询 "  onclick="queryPrice()"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value=" 重置 " onclick="resetQueryPrice()"/></td><td>&nbsp;</td></tr></table>

?

?

3)struts2的Action中getter方法这样设置:private String Area_b_text;//第二个select中的textpublic void setArea_b(String areaB) {Area_b = areaB;}public String getArea_b_text() throws UnsupportedEncodingException {return java.net.URLDecoder.decode(Area_b_text,"UTF-8");//前台获得时自动转为UTF-8编码格式}

?

=====================================================================================

###其他资料

url传递中文
如果jsp页面,myeclipse、web.xml中org.springframework.web.filter.CharacterEncodingFilter,都是UTF-8编码,
直接传中文一般是不会乱码的,如果再有乱码,可以用以下的方式试试。
目前收集到4中方法,中文传参一documentPath为例:
1.改为form方式提交,不用超链接方式提交,用form方式传参指定不乱码。

2.通过encodeURI(encodeURI(checkText))提交,java代码中用URLDecoder.decode解码:
<script>
function download(documentPath){
? var url = "<c:url value='/product/download.action?documentPath='/>"+documentPath;
? url = encodeURI(encodeURI(url));
? window.location.href=url;
}
</script>
java代码中取中文:
String documentPath = (String) request.getParameter('documentPath');
documentPath = URLDecoder.decode(documentPath,"utf-8");

3.修改tomcat的server.xml中的connector,添加URLEncoding="UTF-8"

4.中文从java中传到jsp再通过url传到java:
java中编码:URLEncoder.encode(URLEncoder.encode("传递的中文","utf-8"));
java中解码码:URLDecoder.decode(request.getParameter('documentPath'),"utf-8");

?

?

热点排行
Bad Request.