`
747017186
  • 浏览: 334105 次
社区版块
存档分类
最新评论

地址栏传递中文参数到后台乱码

 
阅读更多

ajax穿中文参数在后台乱码,这是个常见的问题,我在这里总结了一下解决方法。

1.一般用form直接提交中文参数是不会出现乱码的,因为form进行了封装。

2.在地址栏上传递中文参数到后台,后台需要对接收到到的字符进行处理:(仅用于地址栏的处理,如果在地址栏中使用第三种方法进行转码则地址栏会自动把编码有转换成中文的,起不到转码的作用)

request.setCharacterEncoding("UTF-8");

String provinceName=request.getParameter("provinceName");

provinceName = new String(provinceName.getBytes("ISO8859-1"), "UTF-8");//防止乱码强制转换 

 

3.ajax提交,中文有乱码,只能先把中文进行编码在传递,到后台进行解码即可。(引用于ajax提交)

前端js:

var name=encodeURI($('#JS_MLL_search_header_input').val());这是进行中文编码了。

unescape(str) :ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

encodeURI(str):这个推荐使用

后台解码:

System.out.println(URLEncoder.encode("和韩国韩国","utf-8"));//这个就相当于JS里面的encodeURI(str)这个方法。

System.out.println(URLDecoder.decode(URLEncoder.encode("和韩国韩国","utf-8"),"utf-8"));

 

4.ajax提交form表单,一般form里面有很多参数,如果采用ajax提交需要一个接一个的拼接参数很苦逼,就不能采用方法三那种单个编码了,还好jQuery为我们提供一个比较好的方法,$('form').serialize(),这个方法直接把form里面的参数全部自动拼接为url参数的格式,例如:

residentsUser.usercode=yjr&residentsUser.birthday=2015-12-10&residentsUser.sex=0&residentsUser.email=123%40qq.com&residentsUser.name=%E6%9D%A8%E6%99%93%E5%B3%B0&residentsUser.qq=741254&residentsUser.msn=mnd56uytr&residentsUser.userphone=13845263654

如果有中文自动帮我们转码,但是我在测试的时候发现,这个中文自动帮我们转码其实没多大作用,例如:

function updateBaseInfo(){

var parm=$('#JS_basic_info').serialize();

alert(parm);

$.ajax({ 

async:true,

cache:false,

                        data:parm,//此时要注意如果带有中文的参数不能放在这,否则后台无论如何都不会转码成功了,这个我也是醉了,不知道咋弄

dataType:"text",

type:"post",

url: "${rootPath}/updateBaseInfo.htm?"+parm, 参数只能放在这在后台可以使用方法二进行转码

success: function(data){

alert(data);

}

});

 

}

分享到:
评论

相关推荐

    地址栏传递中文参数乱码在js里用escape转码

    乱码,乱码,头大,烦,话说设置Tomcat后可以解决,但有的时候不管用了,这时,我们可以考虑转码方式不直接传中文,在js里用escape转码,记得需要用两次,如: var str=escape(“这是中文参数”); str=escape(str); ...

    Extjs_前后台数据交互[归类].pdf

    `url`属性指定了后台处理的地址,`params`对象包含了要传递给后台的参数。`success`和`failure`回调函数分别处理后台操作成功或失败时的响应。当请求正在进行时,`waitMsg`会显示一个等待消息。 后台代码部分,这里...

    搜索引擎上搜索字符与汉字的转换

    转换过程中,汉字会被拆分成多个字节,每个字节对应一个十六进制数字,这就是你在地址栏看到的“编码格式”。 例如,汉字“搜索”在UTF-8编码下,可能会被转换为"%E6%90%9C%E7%B4%A2"这样的形式。这里的"%E6%90%9C...

    淘客帝国v5.21完整官方版

    增加 加入默认地址栏ICO图标 增加 整合文章可以指定类别 增加 PID过滤空格,防止多填了个空格导致的PID失效丢单。 增加 S8功能,已下架商品,可自定义要跳转地址 增加 超级嵌入功能。完美嵌入淘宝推广频道。进后台-...

    淘客帝国5.21

    增加 加入默认地址栏ICO图标 增加 整合文章可以指定类别 增加 PID过滤空格,防止多填了个空格导致的PID失效丢单。 增加 S8功能,已下架商品,可自定义要跳转地址 增加 超级嵌入功能。完美嵌入淘宝推广频道。进后台-...

    易语言 茶凉专用模块

    参数 是否后台, 逻辑型, 可空, 默认为假:可见到的颜色点 真:后台窗口内颜色点 .参数 色深, 整数型, 可空, 所截取的图片位深度,默认为16位(8,16,24,32) .子程序 超级延迟, , 公开, 无资源占用的延时(无返回值) .参数...

    Basisbbs最易论坛 1.1.0.rar

    更改了以往通过地址栏明文传递论坛组及分论坛名称,改为浏览器后台传输,缩短地址,避免乱码。 修改原发表主题自动返回时间从原5秒改为3秒 修改原发表回复自动返回时间从原3秒改为2秒 修改上传文件后从原来自动...

    servlet知识点集锦

    - 请求转发属于服务器内部操作,地址栏不会发生变化,因此可以在转发后的页面继续处理前一个请求中的数据。 - **重定向(Redirect)**: - 使用`response.sendRedirect(url)`进行重定向。 - 重定向属于客户端行为...

    达内servlet/jsp/jquery资料

    - 与重定向不同的是,客户端浏览器地址栏中的URL不会发生变化。 ### 17. 转发与重定向的区别 - **转发** 不会产生新的HTTP请求,而**重定向** 会产生一个新的HTTP请求。 - 转发过程中数据可以通过请求对象传递,而...

    ajax的两种提交方式(get/post)和两种版本

    GET请求通常用于向服务器查询某些信息,它将参数附加到URL之后,数据会以明文的形式展示在地址栏中,因此它不适用于传输敏感信息。由于URL长度有限制,并且浏览器对URL长度也有一定的限制,因此在使用GET方式提交...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例102 解析URL地址中传递的编码参数 134 实例103 转义帖子中的特殊字符 135 实例104 获取任意字符的ASCII码 136 实例105 查找指定ASCII码对应的字符 136 实例106 合理定义上传文件的名称 137 实例107 通过异或方式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例102 解析URL地址中传递的编码参数 134 实例103 转义帖子中的特殊字符 135 实例104 获取任意字符的ASCII码 136 实例105 查找指定ASCII码对应的字符 136 实例106 合理定义上传文件的名称 137 实例107 通过异或方式...

Global site tag (gtag.js) - Google Analytics