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的text
var 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中的text
public 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 );