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

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下是正常显示的。
...全文
369 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
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中也应该能够指定字符集吧?
加载更多回复(5)

81,122

社区成员

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

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