试了所有朋友们所有的转码方法,还是乱码

jyfugang 2006-03-17 02:45:05
把tomcat4升级到tocmat5,把mysql4升级到mysql5,出现了中文乱码。
数据库中的编码是ISO-8859-1编码
我配置了文件web.xml,用的是TOMCAT5自身的SetCharacterEncodingFilter.class
<filter>
<filter-name>SetCharacter Encoding Filter</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacter Encoding Filter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
其中在<param-value>GBK</param-value>中,作了多种尝试,<param-value>GB2312</param-value>
<param-value>ISO-8859-1</param-value>都没有解决乱码问题。
每个页面都是<%@ page contentType="text/html; charset=GBK" %>
如果我把从数据库中的数据进行getBytes("iso-8859-1",GBK)转码,那么页面就能正常显示。
因为程序是早已写好的,几千个页面,我不可能一个个去修改。
程序在tomcat4下是正常显示的。
...全文
305 25 点赞 打赏 收藏 举报
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jyfugang 2006-03-20
不行
  • 打赏
  • 举报
回复
yyfhz 2006-03-20
那就新建一个GBK的数据库,写一个程序去导一下数据,如果OK的话就可以把原来的数据库扔掉了。
  • 打赏
  • 举报
回复
jyfugang 2006-03-20
mysql用的是iso8859-1,我把它改变成BGK,UTF8,也依然出现乱码。
直接往数据库中插入中文,不是乱码。
  • 打赏
  • 举报
回复
你mysql是用的什么字符集?尝试过直接往数据库里录入么,看看是不是乱码,如果依然是乱码那就不是你代码的问题了.打开那个my.ini里面[mysqld]下面有个default-character-set,知道怎么改了吧
  • 打赏
  • 举报
回复
jyfugang 2006-03-20
还是不行,还有没有高手能解?
  • 打赏
  • 举报
回复
killme2008 2006-03-20
我的意思也是这样,在开发前就该统一编码了
  • 打赏
  • 举报
回复
mgan 2006-03-20
mark
  • 打赏
  • 举报
回复
feixianking 2006-03-20
如果统一了编码应该不会出现乱码的啊
页面——Filter——数据库连接串——数据库
这几个都要统一才行~~
  • 打赏
  • 举报
回复
killme2008 2006-03-20
web.xml少了mapping,不好意思
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  • 打赏
  • 举报
回复
killme2008 2006-03-20
写个filter试试
package com.denny_blue.util.web.filter;


import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class EncodingFilter implements Filter {

private FilterConfig config = null;
// default to ASCII
private String targetEncoding = "UTF-8";

public void init(FilterConfig config) throws ServletException {
this.config = config;
this.targetEncoding = config.getInitParameter("encoding");
}

public void destroy() {
config = null;
targetEncoding = null;
}

public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)srequest;
request.setCharacterEncoding(targetEncoding);
// move on to the next
chain.doFilter(srequest,sresponse);
}

// added by NCT because got exception saying that this method must be overriden.
public FilterConfig getFilterConfig() {
return this.config;
}

// added by NCT because got exception saying that this method must be overriden.
public void setFilterConfig (FilterConfig filterConfig) {
this.config = filterConfig;
}
}


web.xml设置下
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.denny_blue.util.web.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
  • 打赏
  • 举报
回复
nineday 2006-03-20
大家说这样可以吗:
写个方法,把从数据库里取出来的数据做字符编码的转换。
具体的说,楼主的这种情况,把从数据库里取出来的数据转换成 gbk 编码格式的,这样在页面显示的时候就不会出现乱码了。

我现在也碰到了这种问题,我的情况是数据库是UTF-8编码,页面也设成UTF-8,可是从数据库里取出数据并显示在下拉列表框,结果出现乱码,我大为不解,所以希望大家给点意见...
  • 打赏
  • 举报
回复
Saro 2006-03-20
最新的mysql驱动,数据据库连接url的useUnicode=ture&characterEncoding=是不用加的
  • 打赏
  • 举报
回复
Saro 2006-03-20
数据库编码改成UTF-8
  • 打赏
  • 举报
回复
jyfugang 2006-03-20
关键是有这么个问题,以前有部份数据要加入到新的数据库中,同时,还要程序还有新的内容不断插入数据库。
  • 打赏
  • 举报
回复
feixianking 2006-03-20
按你所说,应该是页面显示的问题啊,页面里面有没有加
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
这句试试呢
  • 打赏
  • 举报
回复
CHARGING 2006-03-20
建库和建表均用GBK编码,数据库连接的url加上useUnicode=ture&characterEncoding=GBK
  • 打赏
  • 举报
回复
shinesunbj 2006-03-20
改用sql server2000 吧,我用这个一直没出现过乱码问题
  • 打赏
  • 举报
回复
shinesunbj 2006-03-20
改用sql server2000数据库试试,我用这个,没出现过乱码问题
  • 打赏
  • 举报
回复
sugar900 2006-03-17
oracle不用这样转吗,SqLSR需要,这些工作在写代码的时候就应该明确
  • 打赏
  • 举报
回复
loveunittesting 2006-03-17
检查一下你的数据库/表/字段是否是gbk或者gb2312字符集?url中也应该能够指定字符集吧?
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-03-17 02:45
社区公告
暂无公告