后台Servlet从数据库取出的内容正常 也是中文不是乱码
也添加了
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
对应语句但是 在前台的Javascript异步接受回来之后 不管怎么弄 都是乱码
前台的
pageEncoding="utf-8"
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");也都改了 但还是乱码
把utf-8改成gb2312 也不行 请问这个要怎么处理
也添加了
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
对应语句但是 在前台的Javascript异步接受回来之后 不管怎么弄 都是乱码
前台的
pageEncoding="utf-8"
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");也都改了 但还是乱码
把utf-8改成gb2312 也不行 请问这个要怎么处理
你看我这个帖子 我把所有代码都贴上去了
http://topic.csdn.net/u/20090729/14/ac6ed50f-8978-4be6-93c3-3386449fe677.html?09996810311644395能写编码的地方全都写了 还是不行 诶...
帮我解决了吧 解决了分都给你
例子:
后台测试代码如下:
private void transFunction(HttpServletResponse response, JSONObject json)
throws Exception {
try {
response.setHeader("X-JSON", json.toString());
response.setCharacterEncoding("UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");// 清除缓存
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setDateHeader("Expires", 1);
response.getWriter().print(json.toString());
} catch (RuntimeException e) {
}
}public void test() throws Exception
{
String name = "前台显示的内容";
JSONObject json = new JSONObject();
json.put("Name",name);
HttpServletResponse response = ServletActionContext.getResponse();
this.transFunction(response, json);
}
页面:
<script type ="text/javascript" language ="javascript" >
var req; //定义变量,用来创建xmlhttprequest对象
function creatReq() // 创建xmlhttprequest,ajax开始
{
var url="ajaxOne.action"; //要请求的服务端地址
req=getXmlHttpRequest();
if(req) //成功创建xmlhttprequest
{
req.open("POST",url,true); //与服务端建立连接(请求方式post或get,地址,true表示异步)
req.onreadystatechange = callback; //指定回调函数
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.send(null); //发送请求
}
}
function callback() //回调函数,对服务端的响应处理,监视response状态
{
if(req.readystate==4) //请求状态为4表示成功
{
if(req.status==200) //http状态200表示OK
{
Dispaly(); //所有状态成功,执行此函数,显示数据
}
else //http返回状态失败
{
alert("服务端返回状态" + req.statusText);
}
}
else //请求状态还没有成功,页面等待
{
document .getElementById ("myTime").innerHTML ="数据加载中";
}
}
function Dispaly() //接受服务端返回的数据,对其进行显示
{
var AA= req.responseText.parseJSON();
document .getElementById ("myTime").innerHTML ="帐号:" + AA.Name;
}
function getXmlHttpRequest()
{
if(window.ActiveXObject)
{
var ieArr=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<ieArr.length;i++)
{
var xmlhttp= new ActiveXObject(ieArr[i]);
}
return xmlhttp;
}
else if(window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
}
</script>
注意在网上下个json.js
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;public class FilterDAO implements Filter { public FilterDAO() {
}
public void destroy() {
// TODO Auto-generated method stub }
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
chain.doFilter(request,response); } public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}在web.xml配置
<filter>
<filter-name>filterName</filter-name>
<filter-class>com.iCharms.comm.FilterDAO</filter-class>
</filter>
<filter-mapping>
<filter-name>filterName</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
建议修改配置文件来进行统一配置编码。
web.xml 加上:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.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>