jSP包含页面出现乱码的问题??????
<%@includefile="header.html"%>用这样的方式包含一个页面出现了乱码,怎样解决呢??????????...
<%@ include file="header.html"%>
用这样的方式包含一个页面出现了乱码,怎样解决呢?????????? 展开
用这样的方式包含一个页面出现了乱码,怎样解决呢?????????? 展开
3个回答
2013-09-04
展开全部
一、Java中文问题的由来
Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。
首 先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class 文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关 系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312编译;对于JSP,在文件头加上或基本上就能解决这类乱码问题。
从页面form提交数据到java程序 byte->char
从java程序到页面显示 char—>byte
从数据库到java程序 byte—>char
从java程序到数据库 char—>byte
从文件到java程序 byte->char
从java程序到文件 char->byte
从流到java程序 byte->char
从java程序到流 char->byte
如果在以上转换过程中使用的编码方式与字节原有的编码不一致,很可能就会出现乱码。
二、解决方法
前面已经提到了Java程序与其他媒介交互时字符和字节的转换过程,如果这些转换过程中容易产生乱码。解决这些乱码问题的关键在于确保转换时使用的编码方式与字节原有的编码方式保持一致,下面分别论述(Java或JSP自身产生的乱码请参看第一部分)。
1、JSP与页面参数之间的乱码
JSP 获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编 码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式: request.setCharacterEncoding("GBK")或request.setCharacterEncoding ("gb2312")。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置response.setContentType ("text/html;charset=GBK")或response.setContentType("text/html;charset= gb2312")解决。
如果不想在每个文件里都写这样两句话,更简洁的办法是使用Servlet规范中的过虑器指定编码,过滤器的在web.xml中的典型配置和主要代码如下:
web.xml:
CharacterEncodingFilter
net.vschool.web.CharacterEncodingFilter
encoding
GBK
CharacterEncodingFilter
/*
CharacterEncodingFilter.java:
public class CharacterEncodingFilter implements Filter
{
protected String encoding = null;
public void init(FilterConfig filterConfig) throws ServletException
{
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
chain.doFilter(request, response);
}
}
Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。
首 先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class 文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关 系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312编译;对于JSP,在文件头加上或基本上就能解决这类乱码问题。
从页面form提交数据到java程序 byte->char
从java程序到页面显示 char—>byte
从数据库到java程序 byte—>char
从java程序到数据库 char—>byte
从文件到java程序 byte->char
从java程序到文件 char->byte
从流到java程序 byte->char
从java程序到流 char->byte
如果在以上转换过程中使用的编码方式与字节原有的编码不一致,很可能就会出现乱码。
二、解决方法
前面已经提到了Java程序与其他媒介交互时字符和字节的转换过程,如果这些转换过程中容易产生乱码。解决这些乱码问题的关键在于确保转换时使用的编码方式与字节原有的编码方式保持一致,下面分别论述(Java或JSP自身产生的乱码请参看第一部分)。
1、JSP与页面参数之间的乱码
JSP 获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编 码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式: request.setCharacterEncoding("GBK")或request.setCharacterEncoding ("gb2312")。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置response.setContentType ("text/html;charset=GBK")或response.setContentType("text/html;charset= gb2312")解决。
如果不想在每个文件里都写这样两句话,更简洁的办法是使用Servlet规范中的过虑器指定编码,过滤器的在web.xml中的典型配置和主要代码如下:
web.xml:
CharacterEncodingFilter
net.vschool.web.CharacterEncodingFilter
encoding
GBK
CharacterEncodingFilter
/*
CharacterEncodingFilter.java:
public class CharacterEncodingFilter implements Filter
{
protected String encoding = null;
public void init(FilterConfig filterConfig) throws ServletException
{
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
chain.doFilter(request, response);
}
}
2013-09-04
展开全部
JSP是容易出现乱码问题,不过你只要注意以下几点就一定能搞定
1、保证你的文本编码与你所期望的编码相符(用写字板打开你的页面然后文件另存为,在编码位置选择你期望的文本编码,GB2312对应ANSI,UTF8当然对于UTF8了)
2、保证代码里面的声明编码与你的文本编码相符即:charset=gb2312"和<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
3、保证你的项目内所有页面编码统一,不要UTF8的页面嵌套或引用GB2312的页面,这样一定出现乱码
4、数据库的编码与你项目编码保证一致
5、推荐使用配置myeclips为你JSP的开发工具,能有效降低你出现乱码的可能
以上纯属个人经验,百试百灵
1、保证你的文本编码与你所期望的编码相符(用写字板打开你的页面然后文件另存为,在编码位置选择你期望的文本编码,GB2312对应ANSI,UTF8当然对于UTF8了)
2、保证代码里面的声明编码与你的文本编码相符即:charset=gb2312"和<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
3、保证你的项目内所有页面编码统一,不要UTF8的页面嵌套或引用GB2312的页面,这样一定出现乱码
4、数据库的编码与你项目编码保证一致
5、推荐使用配置myeclips为你JSP的开发工具,能有效降低你出现乱码的可能
以上纯属个人经验,百试百灵
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-04
展开全部
要保证系统的不会出现jsp乱码的问题 首先要建议你统一文件编码为一种 推荐utf-8 然后可以写一个过滤器 (具体代码可到百度搜索)
相信你能解决的!!!
相信你能解决的!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询