但在中并没有指定中文集那么中文将在浏览器页面上显示为乱码当然前面所说是指在Tomcat服务器下其他服务
器有些不是这样比如BEA Weblogic和IBM Websphere是从操作系统中取得默认编码然后按该编码来转码所有用户请求.Struts中
文问题有 3种:发送请求时中文问题、处理响应结果中文问题和国际化资源文件中文问题
1. 发送请求时中文问题
客户机向服务器发送请求时根据所使用浏览器区别可能会有区别编码形式不过通常情况下在请求到达Web容器前要将的转码
转成某种固定编码以方便Web应用处理这种问题有 3种处理思路方法:
第种(针对Tomcat 5 对POST请求有效GET请求无效Tomcat 5 对POST和GET请求时分别处理)可以采用设置用户请求对象编码形式也就是以HttpServletRequest对象编码形式来进行用户请求转码:
//将用户请求转码为GB2312、GB18030、GBK、UTF-8 等型具体转为什么类型编码以您jsp文件编码方式为准java、jsp 、js 、css应保持致编码方式这里以GBK为例
request.CharacterEncoding("GBK");
第 2种(对GET请求有效)可以在Servlet中对用户输入数据进行转码Web容器接受到个请求时它会将它发往某个处理Servlet在Servlet中直接获取用户请求数据然后将的转码为需要格式例如把数据转换为GBK格式:
String username = request.getParameter("username");
username = String(username.getBytes("iso-8859-1”), "GBK");
以上两种思路方法都是很常用但第种是每个页面都要去修改当JSP页面很多时比较麻烦第 2种就每个发送数据都要转码也很麻烦
第 3种就是采用Filter过滤器方式将用户所有请求都通过过滤器进行转码这种思路方法就克服了以上两种思路方法缺点代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain ) throws IOException, ServletException {
request.CharacterEncoding("GBK");
//response.ContentType("text/html;char=GBK");
chain.doFilter(request, response);
}
这里转码为GBK过滤器主要代码当然还要把这个类要在web.xml文件中部署
="xspace-totlerecord">6="xspace-totlepages">1/6="xspace-current">123456>
最新评论