ajax提交到servelt获取参数有乱码的解决方法

 这篇文章主要介绍了ajax提交到servelt获取参数有乱码的解决方法,需要的朋友可以参考下

在这里,假设读者了解基本的 
 
ajax 
 
技术或更多。我仅仅阐述一个现象,一个解决方法;原因、 
 
原理,同样不清楚 
 
…… 
 
我们先从简单的着手, 
 
servlet传值到JSP页面js 
 
脚本中,利用脚本将相关值显示在页面。解决这个方向(servlet——javascript)的中文乱码问题很简单。只需要在 
 
servlet中,添加一个 
 
编码设置: 
 代码如下:
response.setContentType("text/html;charset=UTF-8"); 
 
而且JSP页面编码方式可以随意设定,GBK、GB2312、UTF-8,当然 
 
ISO-8859-1是不行的,至少你要在页面显示中文。 
 
从js脚本传中文到servlet,问题因xmlHttp对象open()方法中,传值方式(GET、POST)不同,而分为两种情况: 
 
在介绍这个问题之前,先将两种传值方式区别展示一下: 
 
假设传递值“软件工程”,变量名为“selcol”。 
 
1、GET方法: 
 代码如下:
function selectCol(){ 
 
createXMLHttpRequest(); 
 
var selcol = " 
 
软件工程 
 代码如下:
"; 
 
var url = "/emp/FindSpecial?selcol=" + selcol; 
 
xmlHttp.onreadystatechange = handleStateChange; 
 
xmlHttp.open("GET",url,true); 
 
xmlHttp.send(null); 
 

 
2、POST方法: 
代码如下:
function selectCol(){ 
 
createXMLHttpRequest(); 
 
var selcol = "selcol=软件工程"; 
 
var url = "/emp/FindSpecial"; 
 
xmlHttp.onreadystatechange = handleStateChange; 
 
xmlHttp.open("POST",url,true); 
 
xmlHttpxmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
 
xmlHttp.send(selcol); 
 

 
如果使用GET方式传递,那么我们在servlet拿值的时候,以如下方式转编码: 
代码如下:
String selcol = new String(request.getParameter("selcol").getBytes("ISO-8859-1"), "GBK"); 
 
转GBK、GB2312都行,转UTF-8不行! 
 
这个时候也许你会很奇怪的发现,这两个语句竟然同时出现: 
 代码如下:
response.setContentType("text/html;charset=UTF-8"); 
String selcol = new String(request.getParameter("selcol").getBytes("ISO-8859-1"), "GBK"); 
 
 
个人是这样理解的:第一句仅保证,从此servlet传递出去的数据编码方式为UTF-8; 
 
而后者则是将传递进来的数据转化成GBK编码的数据。方便与辨别和处理。 
 
如果使用POST方式传递,那么我们在servlet拿值的时候,同上,只是将编码转为UTF-8, 
 
而这个时候,GBK和GB2312不行! 
 代码如下:
String selcol = new String(request.getParameter("selcol").getBytes ("ISO-8859-1"), "UTF-8"); 
 

时间: 2024-10-03 07:39:40

ajax提交到servelt获取参数有乱码的解决方法的相关文章

ajax提交到servelt获取参数有乱码的解决方法_AJAX相关

在这里,假设读者了解基本的 ajax 技术或更多.我仅仅阐述一个现象,一个解决方法:原因. 原理,同样不清楚 -- 我们先从简单的着手, servlet传值到JSP页面js 脚本中,利用脚本将相关值显示在页面.解决这个方向(servlet--javascript)的中文乱码问题很简单.只需要在 servlet中,添加一个 编码设置: 复制代码 代码如下: response.setContentType("text/html;charset=UTF-8"); 而且JSP页面编码方式可以随

asp.net URL中包含中文参数造成乱码的解决方法_实用技巧

问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:http://www.****.com/user.aspx?id=水天,就出现大问题了: 1.从IE地址栏中直接输入这个地址,访问没错: 2.做一个静态页,其中包括这个超链接,点击访问也没错: 3.就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码. 一开始,被这个问题也搞得头大,在google了一把后,总算是把问题给搞清楚了,其实只要这个链接地址不经过任何编码传递是不会有问题的

在ASP.NET里通过URL传递参数得到乱码的解决方法

asp.net|解决 昨日试写ASP.NET程序,其中用Get方法传递参数,如:http://127.0.0.1/showerror,asp?ErrorMessage=数据库出错啦 在程序中我用:string ErrorMessage=Request.QueryString["ErrorMessage"];Response.Write(ErrorMessage); 结果在页面上得到的是空白,我修改了aspx文件的meta部分,把字符集改成gb2312,结果页面上出现乱码. 后来在csd

JQuery的Ajax中Post方法传递中文出现乱码的解决方法_jquery

本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法.分享给大家供大家参考.具体分析如下: 问题一: 今天在做项目时,需要用到Ajax,之前我在用GET方式传递中文参数时,只需要在后台程序中设置页面编码为GB2312即中文能正常显示,可是这次由于表单项目较多,不适合用GET方式传递,只能用POST方式,但发现后台程序中设置编码为GB2312时中文还是显示的乱码.经过一番研究问题才最终得到解决. 解决方法: 解决此问题的

jQuery ajax方法传递中文时出现中文乱码的解决方法_jquery

本文实例讲述了jQuery ajax方法传递中文时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 使用jQuery的ajax方法,在传递中文时出现中文乱码,按照以前的方法,修改了jquery文件中的ajaxSetting也不好使 复制代码 代码如下: sajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded;charse

java表单提交中文乱码的解决方法_java

本文实例为大家分享了java表单提交中文乱码的解决方法,供大家参考,具体内容如下 主页index.xml <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>servlet演示</title> </head> <body> <h2&

TinyMCE提交AjaxForm获取不到数据的解决方法

 这篇文章主要介绍了TinyMCE提交AjaxForm获取不到数据的解决方法,实例分析了对应的源码部分与相应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例分析了TinyMCE提交AjaxForm获取不到数据的解决方法.分享给大家供大家参考.具体分析如下: 在没有使用AjaxForm前,我做的一个小小的评论提交的Web form,评论内容使用了TinyMCE做文本编辑.为了增加一点点的用户体验,就顺手拿AjaxForm来实现Ajax提交.可是发现出现了一个意外的事情.就是

ajax请求乱码的解决方法

这篇文章主要介绍了ajax请求乱码的解决方法(中文乱码),需要的朋友可以参考下 今天遇到一个问题,有关ajax请求中传输中文,遇到乱码的问题.   如下代码: 代码如下: function UpdateFolderInfoByCustId(folderId, folderName, custId) {     $.ajax({         type: "Post",         contentType: "application/x-www-form-urlencod

TinyMCE提交AjaxForm获取不到数据的解决方法_javascript技巧

本文实例分析了TinyMCE提交AjaxForm获取不到数据的解决方法.分享给大家供大家参考.具体分析如下: 在没有使用AjaxForm前,我做的一个小小的评论提交的Web form,评论内容使用了TinyMCE做文本编辑.为了增加一点点的用户体验,就顺手拿AjaxForm来实现Ajax提交.可是发现出现了一个意外的事情.就是每次提交,第一次提交时,AjaxForm会无法获得当前编辑的评论内容,即TextArea里面的内容,要再点击一次提交,才能将TextArea的内容提交上去. 关键是Tiny