`
nirvana1988
  • 浏览: 137688 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

AJAX传值中文乱码解决方法

阅读更多

       AJAX传值时采用的是UTF-8编码格式,客户端中文字符传输到服务器端时,如果服务器编码格式或者所采用的MVC框架的编码格式不是UTF-8,则很可能会出现中文乱码。解决办法如下:

 

        客户端用js函数encodeURI()对中文字符进行两次编码,服务器端采用URLDecoder类对客户端传输过来的中文字符进行UTF-8格式的解码。示例:

         客户端代码:

  $.ajax({
         type: "post",
         url: "createNewGroup.action",
         data:"name="+encodeURI(encodeURI("张三")),
         success: function(msg){
             alert(msg);
         }
        });   

         服务器端代码:

 String name = URLDecoder.decode("客户端传输过来的中文字符","UTF-8");

   

       服务器端往客户端传输中文字符出现乱码时,服务器端可采用URLEncoder类对中文字符进行UTF-8格式的编码。客户端采用js函数decodeURI()对服务器端传输过的中文字符进行两次解码。

        当服务器端传输的是一个json串时,且不可对整个json串进行UTF-8格式的编码(编码后的json串有可能不再具有json原有格式),可采用JsonValueProcessor接口和JsonConfig类对json串中的value进行单独编码。

         示例代码:

	JsonConfig jsonConfig = new JsonConfig(); 
		jsonConfig.registerJsonValueProcessor(String.class,
		  new JsonValueProcessor(){
			public Object processArrayValue(Object value, JsonConfig jsonConfig) {
				 return process(value); 
			}

			public Object processObjectValue(String key, Object value, 
		            JsonConfig jsonConfig) {
				return process(value);
			}
			
			 /** 
		     * process 
		     * @param value 
		     * @return 
		     */ 
		    public Object process(Object value) { 
		        try { 
		            if (value instanceof String) { 
		            
		                return  URLEncoder.encode(value.toString(), "UTF-8"); 
		            } 
		            return value == null ? "" : value.toString(); 
		        } catch (Exception e) { 
		            return ""; 
		        } 

		    } 

		}); 
		
		JSONArray json = JSONArray.fromObject("[{name:\"张三\";age:\12\";sex:\"男\"}]",
				 
				jsonConfig 
		); //编码后的json串

        客户端使用函数decodeURI()再对json串中的value值进行两次解码即可。

0
3
分享到:
评论
2 楼 feelwing1314 2014-05-27  
如果传的字符串的格式是这样的就会有问题:String str = "Hello,你好中国!"
其中逗号是英文格式的,感叹号是中文格式的,转后结果为:Hello%2C你好中国!
客户端用函数decodeURI()转几次都一样,求解
1 楼 fhqllt 2011-05-10  
不错,

相关推荐

    jquery的ajax()函数传值中文乱码解决方法介绍

    在使用jQuery的ajax()函数进行数据传输时,中文乱码问题常常困扰着开发者。这个问题主要出现在数据...这些方法可以帮助开发者避免在使用jQuery的ajax()函数处理中文数据时出现乱码问题,从而确保数据的正确传输和处理。

    CakePHP使用ajax传值

    CakePHP框架中实现Ajax传值是通过AJAX (Asynchronous JavaScript and XML) 技术与后端的...通过以上知识点的掌握,开发者可以有效地在CakePHP框架中实现Ajax传值的功能,解决中文乱码和路径问题,以及优化用户体验。

    ajax到servlet乱码解决

    AJAX 到 Servlet 乱码解决方案 在 Web 开发中,使用 AJAX 通过 URL 传参数给 Servlet 时,经常会遇到乱码问题,即使使用了统一的字符编码也没用。下面我们来探讨这个问题的解决方案。 问题描述 当我们使用 AJAX ...

    jQuery Ajax传值到Servlet出现乱码问题的解决方法

    总的来说,解决Ajax传值到Servlet的乱码问题需要确保每个环节的编码设置一致,从JSP页面到Ajax请求,再到Servlet的接收和响应。只有这样,才能保证数据在整个传输过程中不发生乱码。记得在排查问题时,逐步检查每个...

    前后台传值乱码问题万能思想,通用

    通过以上方法,可以有效地预防和解决大部分的前后台传值乱码问题。但需要注意,每个项目可能有其特定的环境和需求,因此在实际应用中,需要根据具体情况进行调整和优化。 最后,当遇到乱码问题时,调试和日志记录是...

    解决ajax乱码和页面传值问题

    在Web开发中,Ajax(Asynchronous ...总结,解决Ajax乱码问题主要涉及数据编码、请求头设置和服务器端解码,而页面传值则需根据需求选择适当的方法。理解并熟练运用这些技巧,能显著提升Web应用的性能和用户体验。

    java 页面url传值中文乱码的解决方法

    Java 页面URL传值中文乱码问题通常出现在前端Ajax请求中,当URL参数包含中文字符时,服务器端通过`request.getParameter()`获取参数时,可能会出现乱码现象。这是因为HTTP协议默认使用ISO-8859-1编码,而中文字符...

    jsp传值本地无乱码测试机出现乱码问题解决

    在进行JSP传值操作时,字符编码的设置和转换是解决乱码问题的关键。开发人员需要确保在客户端和服务器端采用统一的编码标准,并在必要时进行适当的编码转换。同时,通过充分的测试和良好的文档记录,可以提前发现和...

    Ajax传递中文参数到后台乱码的有效解决方法

    针对这一问题,解决方案是确保在发送Ajax请求之前,对包含中文的参数使用encodeURI方法进行编码,并且要进行两次编码。这是因为encodeURI会对URI中的某些特殊字符进行编码,但它不会对URI的某些保留字符进行编码。...

    ajax与Servlet,传值Demo

    这个“ajax与Servlet,传值Demo”着重展示了如何利用Ajax实现页面局部更新,同时处理Servlet接收到的Ajax传递的数据,包括解决中文乱码问题。 Ajax的核心在于JavaScript,它允许网页在不重新加载整个页面的情况下与...

    jquery ajax传递中文参数乱码问题及解决方法说明

    本文将详细探讨使用jQuery进行Ajax请求时,传递中文参数可能出现的乱码问题,并给出解决这些问题的方法。当使用jQuery进行Ajax通信时,数据通常需要通过GET或POST方法传输,如果参数为中文,很可能会因为编码方式不...

    探讨PHP JSON中文乱码的解决方法详解

    中文乱码是常有的事,JSON作为与XML类似的数据交换格式,在PHP用来进行交互时也会出现中 文乱码的情况,解决PHP JSON中文乱码的方法思路其实与PHP Ajax传值中文字符乱码的解决方法类似,下面我以教程形式详细介绍下...

    JS传值出现中文参数乱码的解决方法

    以下是一些解决JS传值出现中文参数乱码的常用方法。 1. **使用`encodeURIComponent()`函数**: JavaScript的`encodeURIComponent()`函数可以对URL的一部分进行编码,它会将非字母数字字符转换为UTF-8序列,并用百...

    JSP页面传值乱码过滤方法

    本文将详细介绍如何通过过滤器(Filter)来解决JSP页面传值时的乱码过滤问题。 首先,我们需要了解问题的背景。在JSP中,当用户通过表单提交数据时,如果服务器端没有正确地处理字符编码,就可能出现乱码。这是因为...

    jquery.ajax的url中传递中文乱码问题的解决方法

    在Web开发过程中,中文乱码问题是一个常见的问题,尤其是在使用jquery.ajax方法发送数据到服务器时。由于历史原因和技术细节的差异,如果不正确处理编码,中文字符在URL中传递时经常会遇到乱码现象。本文介绍了如何...

    Lotusscript代理获取url的传值及解码

    ### LotusScript 代理获取 ...通过上述步骤,我们可以有效地解决在 Domino 服务器中通过 AJAX 提交数据时遇到的中文乱码问题。这种方式不仅适用于 POST 方法,也适用于 GET 方法,确保了前后端之间的数据传输准确性。

    java前后台(含数据库)乱码大综合

    本文将针对Struts2文件下载乱码、Ajax中文参数乱码、Servlet响应乱码、JSP页面间传值乱码以及数据库乱码等场景进行深入探讨。 首先,Struts2文件下载时的中文文件名乱码问题,可以通过以下两个步骤解决。在设置...

    利用Ajax实现在脚本里传值实例介绍

    总结一下,Ajax传值的关键在于创建`XMLHttpRequest`对象,设置请求参数和响应处理,以及正确处理后端的响应。这个实例适用于理解Ajax的基本工作原理,并可以作为开发中的基础模板。在实际应用中,可能需要根据具体...

Global site tag (gtag.js) - Google Analytics