`

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");

 

 

分享到:
评论
1 楼 107x 2015-05-30  
不错,谢谢!
js文件中使用encodeURI()方法(必须套两层)。
login_name = encodeURI(encodeURI(login_name)); 

相关推荐

    Java Http请求传json数据乱码问题的解决

    在JavaScript中,字符串默认使用UTF-8编码,因此传输前需要确保后端服务也按照UTF-8编码来接收和解析数据。 在后端Java代码中,处理请求参数时可能会遇到乱码问题。例如,使用`request.getParameter("params")`获取...

    中文乱码解决方案终稿.pdf

    然而,问题在于,当通过浏览器地址栏直接输入中文参数提交时,由于IE6有一个“以UTF-8发送URL”的选项,这可能导致乱码。这是因为IE6将URL编码为UTF-8,而Tomcat可能仍按照默认的ISO-8859-1解码,从而引发乱码。 ...

    ajax传递中文参数乱码解决办法

    ### AJAX传递中文参数乱码解决办法 在Web开发过程中,数据传输是不可或缺的一部分,而AJAX作为一种无需重新加载整个页面的情况下就能与服务器交换数据的技术,被广泛应用于动态数据交互场景中。然而,在处理中文等...

    解决JS传递中文乱码问题

    本文将深入探讨如何解决JavaScript(简称JS)在传递中文字符时出现的乱码问题,并提供具体的解决方案。 #### 一、问题背景 在Web应用中,前端页面与后端服务之间通过HTTP请求进行数据交互是非常常见的操作。当这些...

    ASP同一站点下gb2312和utf-8页面传递参数乱码的终极解决方法

    这是因为JavaScript在处理字符串时,特别是通过URL传递参数时,默认使用UTF-8编码。如果要传递的参数是GB2312编码的,就需要先用escape函数进行转换,这样才能保证在其他页面正确解析。例如,在一个GB2312编码的页面...

    Ajax中文乱码问题解决方案

    3. **正确使用JavaScript编码函数**:在传递中文字符时,使用`encodeURIComponent()`函数进行编码,它会将所有非字母数字字符转换为UTF-8序列。在接收响应数据时,若数据是JSON格式,JSON.parse()会自动处理编码问题...

    escape --AJAX和JS传中文乱码的最终解决方案

    总结来说,解决AJAX和JS传中文乱码问题的关键在于理解各种编码方式,以及在客户端和服务器之间正确地转换和传递数据。通过合理运用JavaScript的"escape"、"encodeURIComponent"等函数,并确保统一的编码标准,我们...

    解决url中文乱码.doc

    ("因为js url在传值的过程中使用的是js自己默认的字符集编码规则,我们必须把它转成属于我们自己的编码规格","UTF-8")%&gt; ``` 这里使用UTF-8作为编码格式。 4. **接收参数**:在接收URL参数的页面,例如`Succ.jsp...

    json 中文乱码解决方案

    - 在服务器端,可以使用Java的`new String(bytes, "UTF-8")`来进行编码转换。 - 在JavaScript中,可以利用`decodeURIComponent`函数对URL编码的字符串进行解码。 #### 三、实例演示 下面通过一个简单的例子来展示...

    基于jquery_二维码生成和打印_兼容IE6-IE8_解决汉字乱码问题.zip

    此外,解决汉字乱码问题通常需要确保服务器和客户端的字符编码一致,如UTF-8。在JavaScript中,使用正确的编码进行字符串处理,如`decodeURIComponent()`和`encodeURIComponent()`函数,可以确保汉字在生成二维码时...

    奇数个中文字符url传递乱码

    为了解决奇数个中文字符URL传递乱码的问题,可以采用JavaScript来实现正确的编码处理。具体步骤如下: 1. **获取原始URL**:首先获取用户输入或系统生成的原始URL。 2. **编码处理**: - 使用`encodeURI()`函数...

    Ajax乱码解决办法

    4. **JSON序列化问题**:如果使用JSON格式传递数据,JSON.stringify()默认使用UTF-8编码,如果服务器不支持UTF-8,也会产生乱码。 5. **前端处理不当**:在接收到服务器返回的响应数据后,前端JavaScript没有进行...

    URL传中文参数导致乱码的解决方案之encodeURI

    对于非ASCII字符,如中文,`encodeURI`会将其转换为UTF-8编码,并用%加两位十六进制数表示每个字节。 在前端处理中文参数时,通常需要使用两次`encodeURI`。这是因为浏览器在将URL发送到服务器之前,会自动对URL...

    解决qr_code中文乱码问题

    例如,如果使用了错误的编码格式(如ASCII或UTF-8),中文字符会被解析为无效的字节序列,从而显示为乱码。 解决这个问题的关键在于确保正确地设置编码参数。以下是一些解决方法: 1. **选择正确的编码格式**:在...

    JSP中文乱码问题最优解决方法

    在处理页面中,首先设置请求体的字符集为`UTF-8`,然后通过`getBytes("ISO-8859-1")`方法获取原始的字节流,再将其转换为`UTF-8`字符集下的字符串。 通过以上步骤,可以有效地解决JSP页面中的中文乱码问题,提高...

    在程序开发中的乱码问题解决办法

    ### 在程序开发中的乱码问题解决办法 #### 知识点概述 在程序开发过程中,中文乱码问题一直是困扰很多开发者的一大难题。特别是在涉及到不同编码格式处理时,如果不注意编码设置,很容易出现乱码现象。本文将从多...

    解决jsp中文乱码问题

    例如,在客户端使用了UTF-8编码输入中文,但在服务器端使用ISO-8859-1进行解码,就会出现乱码现象。 #### 二、解决方案 1. **设置JSP页面编码** 在JSP页面的开头设置正确的页面编码格式是非常重要的一步。可以...

    ajax中文乱码的各种解决办法总结

    本文将针对标题和描述中提到的Ajax中文乱码问题,提供几种常见的解决办法。 1. **设置Content-Type头部** 当使用Ajax发送请求时,数据默认被编码为Unicode格式。若服务器期望的数据编码为其他格式(如GBK或GB2312...

    工作流乱码解决方案

    9. **数据库查询结果集处理**:从数据库读取数据时,确保ResultSet的编码设置正确,通常通过`ResultSetMetaData`获取列的字符集,并转换为UTF-8。 10. **国际化与本地化**:如果需要支持多种语言,可以考虑使用...

    解决gb2312编码导致乱码问题

    gb2312是一种较老的中文字符编码标准,主要用于简体中文,而在现代的网络环境中,UTF-8编码已经成为主流,这可能导致在不兼容的情况下出现乱码。 描述中提到的“使用方法见本人博客《IE中js往后台传输中文乱码》”...

Global site tag (gtag.js) - Google Analytics