iteye_6860 2009-04-17 17:33
浏览 760
已采纳

ajax返回中文,页面显示成问号

场景:
基本所有地方都设置为utf-8

页面中

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


filter中
httpResponse.setCharacterEncoding(encoding); // encoding为utf-8
httpResponse.setContentType("text/html; charset=utf-8");

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



服务器端中文都是正确的
客户端中文全是问号"?",一个中文字对应一个问号

原因
推测为服务器端和客户端的编码方式不一样

解决方法
给servlet和action的response都加上
response.setCharacterEncoding("utf-8");

ps
不知道为什么这么做就ok,每个servlet和action都要加,特别麻烦
上面的filter中已经加了一次了,貌似没有起作用,可能对filter理解还有问题


问题补充:
@lovewhzlq
有点理解了,难道不能用filter处理这种问题吗?
或者说是有别的方法可以处理
只能是每次都再写一遍吗
问题补充:
@lovewhzlq
谢谢啦
我把print相关的都抽出来写了个方法放在BaseServlet中了。
  • 写回答

3条回答 默认 最新

  • wanghaolovezlq 2009-04-17 20:04
    关注

    你可以搞个servlet基类,里面预先做一下
    httpResponse.setCharacterEncoding(encoding); // encoding为utf-8

    httpResponse.setContentType("text/html; charset=utf-8");
    然后你自己写的servlet都继承于这个基类就能搞定了啊,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器