您的位置:首页 > 其它

AJAX处理汉字乱码的问题

2013-04-12 20:55 183 查看
JSP中乱码产生的原因是web容器(Tomcat)默认使用ISO-8859-1进行编码的,而我们可能使用的是UTF-8,GBK,GB2312等编码方式进行jsp编写的,因此需要一个转换器进行转换或者修改默认编码方式,这里我主要用转换器+过滤器完成自动转换功能.

客户端脚本文件:

View Code

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>jsonexample</display-name>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.myServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encoding</filter-name>
<filter-class>commons.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


在Servlet的doPut()和doPost()方法中直接获取传递的数据即可。

BufferedReader sis = request.getReader();
String data=sis.readLine().toString();

除了过滤器方法,还可以在Servlet的doPut()和doPost()方法中用

request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码,此方法对doGet()和doDelete()方法无效。

这种存在一个问题就是每次doPut()和doPost()方法中都要设置请求的编码,所以一劳永逸的方法还是设置过滤器。

这样就完美解决了AJAX开发乱码的问题,如有问题,请留言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: