jsp乱码问题处理,都忘了,整理一下,不要笑话!!

xiaoxiao2026-03-20  9

页面输出出现乱码:        1. <%@ page contentType="text/html; charset=gb2312"%>        2.<%@ page language="java"  pageEncoding="gb2312"%>        二者的区别:ContentType属性指定了MIME(MIME表示多用途Internet邮件扩允协议,有效的类型有:text,image, audio,video,applications,multipart和message)类型和JSP页面回应时的字符编码方式;ContentType的charset是指服务器发送给客户端时的内容编码,pageEncoding是jsp文件本身的编码。 表单提交中文时出现乱码:        1.一般解决办法                submit.jsp文件表单中有<input type="text" name="name">文本标签其值为中文时,提交到process.jsp后用<%=request.getParameter("name")%>句话输出出现乱码,这是由于服务器端默认的编码是iso-8859-1而我们一般页面设置是gbk所以要将文本编码转换成gbk的,最好用<%=new String(request.getParameter("name").getBytes("iso-8859-1"),"gbk")%>这句话,一定正确(在页面头加上<%@ page contentType="text/html; charset=gb2312"%>或<%@ page language="java"  pageEncoding="gb2312"%>),由于服务器和ie编码的设置不同其他方法都不是通用的。        2.过滤器解决法              FilterToChinese.java 文件内容:              package com.accp.myfilter;              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;              public class FilterToChinese implements Filter{                  public void destroy() {                        }                  public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {                             request.setCharacterEncoding("GB18030");                       chain.doFilter(request,response);                  }                  public void init(FilterConfig config) throws ServletException {                              }              }              web.xml 文件内容:              <filter>                  <filter-name>chinese</filter-name>                  <filter-class>FilterToChinese</filter-class>              </filter>              <filter-mapping>                  <filter-name>chinese</filter-name>                  <url-pattern>/*</url-pattern>              </filter-mapping>        过滤器只能过滤以POST方式提交的中文乱码,而GET方式却无能为力了,GET方式数据经过URL地址栏! 那么在到地址栏的时候,编码方式又被转成了ISO8859_1,所以出现乱码,用new String(request.getParameter("name").getBytes("iso-8859-1"),"gbk")处理从URL地址上获取来的数据。 只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK 。

相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-5046213.html

最新回复(0)