日期:2014-05-16  浏览次数:20366 次

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编码,
直接传中文一般是不会乱码的,如果再有乱码,