温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Ajax乱码如何解决

发布时间:2022-09-28 17:24:32 来源:亿速云 阅读:114 作者:iii 栏目:开发技术

这篇“Ajax乱码如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ajax乱码如何解决”文章吧。

1.JSP、STRUTS等中文乱码的解决方法其实解决的只有一种:

request.setCharacterEncoding(编码);

只有一种方法,但我们有不同的方法,初学者会直接在JSP页面中使用,而有经验的程序员会使用过滤器。现在的方法是说过滤器。这里统一使用UTF-8编码为例进行说明。具体过程就不多说了,网上有很多教程。有点懒,把TOMCAT抄过来就行了。TOMCAT 目录下的“webapps” jsp-examples “WEB-INF” classes “filters” 找到SetCharacterEncodingFilter.java 这个类进入你的程序并配置映射路径。配置完你的垃圾问题基本解决了。但我想映射路径警告是你不能使用'*'

< Filter-Mapping > < filter-name > Set Character Encoding </ filter-name > < servlet-name > * </ servlet-name > </ filter-Mapping >

如上如此配置(也许是网上大部分教程的方法,我记得也对我造成了伤害),你可能只解决了JSP乱码,需要解决STRUTS的乱码映射*.do或servletActionName。设置初始化参数编码中的值就行了。

< init-param > < param-name >编码</ param-name > < param-value > UTF-. 8 </ param-value > </ init-param >

当然,最重要的是要记住,按照前面提到的方法,你使用的保存文件的编码编辑器的更改必须与使用的字符编码保持一致。

在JSP的内容中,比如网上的教程或者使用说的那种招数,把所有的页面加到最上面:

<% @Page Language = "Java" contentType = " text / HTML; charset = UTF - .8 "
    pageEncoding = "UTF - .8 " %>

至此,相信JSP、ACTION乱码都不太可能出现。

2.资源文件乱码的解决办法

资源文件大家都知道国际支持是不可或缺的,如果资源文件出现乱码也很可怕?其实资源文件乱码是一个很好的解决办法,其原因是因为使用UTF-8编码的文件作为JSP代码,不会导致资源文件发生相应的变化,所以只要保存资源文件的编码即可改正,垃圾问题就解决了。当然,你要使用中文native2ascii命令进行适当的转换。

3.调用JS时,JS内容乱码的解决方法。

其实JS乱码还是跟编码文件有关系,如果JS中有中文,那么保存JS文件编码必须现在调用这个页面编码相同的JS否则,所有你要从中文JSP传过来的页面JS出现正常. 可见对于JS出现乱码调用是最容易解决的。

4.AJAX提交数据乱码、返回数据乱码的解决办法

本来的目的,当然是跟AJAX相关的编码乱码问题,其实很多人和我一样想到文件编码设置,在编码设置requet访问数据集在响应数据返回编码一切都会很顺利,但一切都是徒劳的,讨厌的垃圾再次出现在你面前。N 之后你尝试了各种方法,包括 JS 自己的 escape、unescape 方法,你发现屏幕上仍然疯狂出现垃圾。

其实这个方法试过N多之后,很多人都找不到很简单的解决方法,而它的答案就在于我们处理过的JSP乱码。再来看看经典的AJAX请求方式代码

xmlhttp.open(“POST”,URL,异步);xmlhttp.setRequestHeader("内容-类型", "text/HTML");xmlhttp.send(参数);

通过前面的描述,你现在不知道辨别没有。不知道是受网上教程的影响还是其他方面的影响,setRequestHeader 和是同年的,没有人希望它改变过去,但问题只是出了这个地方。回想一下JSP页面的内容编码设置,这里有这样一个:

contentType = "文本/html;字符集 = UTF-8"

问题现在知道了,所以我们需要把代码改成第二句:

xmlhttp.setRequestHeader ("Content-Type", "text/html; charset = UTF-8");

最后,不要忘记在返回数据时也设置:

response.setContentType(“文本/XML”);response.setCharacterEncoding("UTF-.8");

如果要问为什么,那么,其实我们可以看成是一个临时的xmlhttp页面,它是由浏览器动态生成的,主要作用是在后台获取请求的数据(可以看成一个高级iframe )。所以对于普通的编码设置页面,应该是一样的设置。servlet中的返回数据为什么设置contentType和encoding其原因是一样的。众所周知,它是jsp servlet的最后一种形式,而jsp top设置的内容其实就是让生成的servlet生成这么两句话:

response.setContentType(“文本/HTML”);response.setCharacterEncoding("UTF-.8");

pageEncoding现在jvm描述了这个页面的内容保存你想用什么编码(生成后跟CLASS有关系)。因此在 servlet 响应中设置编码是被授予的。

response.setContentType ("text/xml; charset = UTF-8");
response.setHeader("Pragma", "no-cache");//HTTP 1.0  response.setDateHeader("Expires", 0);//防止在代理服务器缓存  PrintWriter out = response.getWriter();out.write (outXML);out.flush();out.close();

以上就是关于“Ajax乱码如何解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI