郁闷,让人头痛的JSP乱码问题

wudaiwen1022 2007-12-14 10:09:18
JSP页面顶部设置了<%@ page contentType="text/html; charset=GB2312"%> 语句,为什么还老是出现乱码啊。实在想不明白。郁闷得很啊!高分求高手指导。
...全文
295 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
FredWorks 2007-12-14
  • 打赏
  • 举报
回复
这个问题已经被问烂了,为什么在页面配置了编码方式以后还要写Filter的原因我就不多解释了,楼主去google一下就知道了。我只提一下,这个涉及到web容器使用的编码,jvm使用的编码以及页面使用的编码等几个方面的问题。
Mr_JavaBean 2007-12-14
  • 打赏
  • 举报
回复
同楼上...
sunwei_07 2007-12-14
  • 打赏
  • 举报
回复
像2楼说的设置过滤器,或者自己在程序里转编码
srss008 2007-12-14
  • 打赏
  • 举报
回复
留个标签,以后查看
fengyifei11228 2007-12-14
  • 打赏
  • 举报
回复
JSP页面顶部设置后仅仅允许你在页面内出现中文,如果你传入的参数出现了中文,那么你的相应页面就会出现乱码
这时候一般通过filter设置,解决url中文问题,见1楼
如果你的参数仅仅有几个是中文的,那么你可以在得到参数的时候用
new String(s.getBytes("ISO-8859-1"),"gbk")转码
hyowner 2007-12-14
  • 打赏
  • 举报
回复
2楼是正确的
yuer1985 2007-12-14
  • 打赏
  • 举报
回复
在jsp中
若是直接赋值的中文字符串用<%@page contentType="text/html; charset=GB2312"%>就可以正常显示,不需要用函数转换内码
若是request传送来的中文字符串必须要用类似getStr(String name)函数转换内码

楼主自己视情况而定
angues1980 2007-12-14
  • 打赏
  • 举报
回复
补充一下,原来写过的
http://blog.csdn.net/angues1980/archive/2005/12/08/546870.aspx
FredWorks 2007-12-14
  • 打赏
  • 举报
回复
单单配置这个是不够的。我这里有一个filter,不过我在jsp页面里面配置的是使用UTF-8的编码,你自己把它修改一下来用吧


public class CharactorEncodingFilter implements Filter {

private String charactorEncoding;

private static final String CHARACTOR_ENCODING_PARAMETER_NAME = "charactorEncoding";

@Override
public void destroy() {
//什么也不用做。
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding(this.charactorEncoding);
response.setCharacterEncoding(this.charactorEncoding);
chain.doFilter(request, response);
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.charactorEncoding = filterConfig.getInitParameter(CHARACTOR_ENCODING_PARAMETER_NAME);
}

}


这个是web.xml的配置:

<filter>
<description>处理中文化问题</description>
<filter-name>charactorEncodingFilter</filter-name>
<filter-class>
cn.com.gxlu.fiberscheduler.web.util.CharactorEncodingFilter
</filter-class>
<init-param>
<param-name>charactorEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charactorEncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
ill1224 2007-12-14
  • 打赏
  • 举报
回复
spring里面有字符过滤器,很好用.只需要一个配置.
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<display-name>CharacterEncodingFilter</display-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
chjx1982 2007-12-14
  • 打赏
  • 举报
回复
这个问题我也碰到过,对于新手而言这应该是必须经历的一样,gb2312只有几千个中文,支持中文不太好,建议你用GBK,听说他包含几万个中文,连繁体都没有问题,试试看,另外gb2312转GBK的时候是不会对数据库产生影响的,我就出现过这个问题。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧