论坛首页 Web前端技术论坛

Ajax responseText中文乱码问题

浏览 6482 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (8) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-09-06  

今天用Ajax做一个小功能发现传递数据的时候如果有中文的话用javascript接收的时候会有乱码问题。经过一上午的时间查找资料发现可以用以下方法解决。

1.在servlet里面设置

response.setContentType("text/html; charset=UTF-8");

 2.在jsp里面设置

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

 经过这两上设置以后就可以正确显示中文了。

希望能节约大家时间。

   发表时间:2010-09-09  
AJAX传递数据就是以UTF-8编码传递的 有时候你那样还解决不了
我就遇到过。 在过滤器设置编码对AJAX请求与响应的貌似不管用
在服务器端(如:Servlet)加上
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

再不行的话 分析一下到底是在那个环节出现的乱码,再对相应的乱码进行转换,再不行就别传中文,用英文!或者进行加密,传加密之后的字符串
0 请登录后投票
   发表时间:2010-09-13  
直接写一个过滤器处理乱码的类,然后在web.xml里配置一下;
1.CharacterEncodingFilter.java
package com.zuxia.qlzx_shopping.util;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* CharacterEncodingFilter概要说明
* 过滤器处理乱码的类
* @author ycglei886
* 创建时间:2010/5/20
* @version 1.0
*
*/
public class CharacterEncodingFilter implements Filter {
private FilterConfig config;
private String encoding = "ISO8859_1";

public void destroy() {
System.out.println(config);
config = null;
}

/**
*
* (重写方法)
* doFilter方法概述
* 处理过滤器
*
* @param request
* @param response
* @param chain
* @throws IOException
* @throws ServletException
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}

public void init(FilterConfig config) throws ServletException {
this.config = config;
String s = config.getInitParameter("encoding");
if (s != null) {
encoding = s;
}
}
}

web.xml里配置如下:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.zuxia.qlzx_shopping.util.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这样轻松解决问题,如果下次要用就直接拿出来用,没必要要每次都在Servlet里
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
来出来乱码。很麻烦的
0 请登录后投票
   发表时间:2010-09-14  
我也遇到过,我是用encodeURI()将中文编码下就好了.
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics