会员登录 用户名: 密码: 登录 新会员注册 [找回密码]
当前位置:编程论坛 >> Web开发技术 >> JSP编程论坛 >> lomboz eclipse 与mysql
首页
中资源
  发表一个新主题  发表一个新投票  回复主题 您是本帖的第 443 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
 * 贴子主题:lomboz eclipse 与mysql 悬赏分30 [提问中] 报告本帖给版主  显示可打印的版本  把本贴打包邮递  把本贴加入论坛收藏夹  发送本页面给朋友  把本贴加入IE收藏夹 
 conish 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:147
  专家分:0
  提问帖:2/0
  回答帖:0
  总帖数:6
  经验值:61
  注 册:2008-11-8
给conish发送一个短消息 把conish加入好友 查看conish的个人资料 搜索conish在JSP编程论坛的所有贴子 引用回复这个贴子 回复这个贴子楼主

发贴心情 lomboz eclipse 与mysql

lomboz eclipse 连mysql在database explorer里显示的全是乱码,myeclipse 里也是那样的,按照网上一些高手说的试过都不行,请大家帮帮忙。
发帖:2008-11-8 23:10:00
  鲜花(0)  鸡蛋(0)
 张三丰 帅哥哟,离线,有人找我吗?
  
  
  等 级:职业侠客
  积 分:6891
  专家分:4142
  提问帖:0/0
  回答帖:369
  总帖数:422
  经验值:518
  注 册:2008-7-13
给张三丰发送一个短消息 把张三丰加入好友 查看张三丰的个人资料 搜索张三丰在JSP编程论坛的所有贴子 引用回复这个贴子 回复这个贴子2

发贴心情 

一定是你编码不符吧。一般都是编码上有问题

一、乱码 
1、页面编码 (如:<%@ page contentType="text/html;charset=gb2312" language="java"%>) 
2、传参编码 (如:request.getParameter("name")) 
3、 jdbc URL 编码 (如:conn=DriverManager.getConnection("jdbc:mysql://localhost: 3306/project1?useUnicode=true&characterEncoding=GBK","admin","adminisme"); 
4、数据库编码 (如:mysql的安装下有my.ini文件里面:default-character-set=latin1 (默认)) 
最初我页面上面编码为:<%@ page contentType="text/html;charset=gb2312" language="java"%>;传参没有设置(默认好像是ISO-8859-1);jdbc url也没有设置;数据也没有设置,默认为latin1。我没有用过滤器来过滤编码而是通过一个类来编码转换,因为设计的输入中文的字段比较少,就写了如下类: 
import java.io.UnsupportedEncodingException; 
import java.lang.String; 
public class Strto { 

public static String toChinese(String str){ 
if(str==null||str.length()<1){ 
str=""; 
}else{ 
try{ 
str=(new String(str.getBytes("ISO-8859-1"),"gb2312")); 
}catch(UnsupportedEncodingException e){ 
e.printStackTrace(); 
return str; 


return str; 

public static String toIso(String str){ 
if(str==null||str.length()<1){ 
str=""; 
}else{ 
try{ 
str=(new String(str.getBytes("gb2312"),"ISO-8859-1")); 
}catch(UnsupportedEncodingException e){ 
e.printStackTrace(); 
return str; 


return str; 


页 面输入的中文通过request取得值后在往数据库中送的时候request.getParameter("name")的到的值可直接存入,因为页面输 入的中文是gb2312,通过request.getParameter的到后默认会自动转码为ISO-8859-1,这样和数据库就一样了,对于这个就 要转码:insert into user(loginName,password,name) values('admin','admin','管理员');这个时候“管理员”这个值就要转码,上面类方法Strto.toIso("管理员")在往 数据库中送,这个就可以存入 
在取的时候,涉及到有中文的变量在页面上要转码为gb2312,方法Strto.toChinese(string srt); 
以上方法很有局限性质,下面介绍一种更通用的方法: 
1、页面编码 (采用:<%@ page contentType="text/html;charset=gb2312" language="java"%>) 
2、传参编码 (采用过滤器) 
3、 jdbc URL 编码 (采用:conn=DriverManager.getConnection("jdbc:mysql://localhost: 3306/project1?useUnicode=true&characterEncoding=GBK","admin","adminisme"); 
4、数据库编码 (无须修改mysql的文件,最后在不修改情况下来实现) 
具体方法: 
一、页面编码如上采用:<%@ page contentType="text/html;charset=gb2312" language="java"%> 
二、传参编码:写如下一个类 
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 EncodingFilter implements Filter { 
protected String encoding = null; 
protected FilterConfig filterConfig = null; 
protected boolean ignore = true; 
public void destroy() { 
this.encoding = null; 
this.filterConfig = null; 

public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, 
ServletException { 
// Conditionally select and set the character encoding to be used 
if (ignore || (request.getCharacterEncoding() == null)) { 
String encoding = selectEncoding(request); 
if (encoding != null) { 
request.setCharacterEncoding(encoding); 


// Pass control on to the next filter 
chain.doFilter(request, response); 

public void init(FilterConfig filterConfig) throws ServletException { 
this.filterConfig = filterConfig; 
this.encoding = filterConfig.getInitParameter("encoding"); 
String value = filterConfig.getInitParameter("ignore"); 
if (value == null) { 
this.ignore = true; 
} else if (value.equalsIgnoreCase("true")) { 
this.ignore = true; 
} else if (value.equalsIgnoreCase("yes")) { 
this.ignore = true; 
} else { 
this.ignore = false; 


protected String selectEncoding(ServletRequest request) { 
return (this.encoding); 


并且在WEB-INFO的文件下的web.xml中加入 
<filter> 
<filter-name>EncodingFilter</filter-name> 
<filter-class>…….EncodingFilter</filter-class> //省略号省略的是这个类所在的包 
- <init-param> 
<param-name>encoding</param-name> 
<param-value>GBK</param-value> 
</init-param> 
</filter> 
- <filter-mapping> 
<filter-name>EncodingFilter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
三、 jdbc URL 编码 采用上面的:conn=DriverManager.getConnection("jdbc:mysql://localhost: 3306/project1?useUnicode=true&characterEncoding=GBK","admin","adminisme"); 
四、数据库编码 
我们这里采用的在家里表的时候设置编码来解决具体如下实例 
create table user (id bigint not null auto_increment, 
loginName varchar(32) not null unique key, 
password varchar(32), 
userName varchar(32) not null, 
email varchar(128), 
createTime datetime, 
modifyTime datetime, 
primary key (id))DEFAULT CHARSET=gbk; 
关键是红色字体部分,这样就保证了页面-参数-url-表的编码统一,不管数据本身是不是GBK的,但表是GBK的就可以了,(gb2312是GBK的子集) 

发帖:2008-11-9 6:57:00
 conish 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:147
  专家分:0
  提问帖:2/0
  回答帖:0
  总帖数:6
  经验值:61
  注 册:2008-11-8
给conish发送一个短消息 把conish加入好友 查看conish的个人资料 搜索conish在JSP编程论坛的所有贴子 引用回复这个贴子 回复这个贴子3

发贴心情 

我是说在myeclipse里的database explorer里显示的全是乱码。你可以看一下啊
发帖:2008-11-9 17:08:00
 张敬 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:213
  专家分:0
  提问帖:0/0
  回答帖:2
  总帖数:2
  经验值:52
  注 册:2008-11-12
给张敬发送一个短消息 把张敬加入好友 查看张敬的个人资料 搜索张敬在JSP编程论坛的所有贴子 引用回复这个贴子 回复这个贴子4

发贴心情 

我是新手,以后还请多多请教,我想问一下什么是编程
发帖:2008-11-12 21:19:00
 张敬 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:213
  专家分:0
  提问帖:0/0
  回答帖:2
  总帖数:2
  经验值:52
  注 册:2008-11-12
给张敬发送一个短消息 把张敬加入好友 查看张敬的个人资料 搜索张敬在JSP编程论坛的所有贴子 引用回复这个贴子 回复这个贴子5

发贴心情 

你发的我看懂,你能不能给我说一下
发帖:2008-11-12 21:23:00

本主题贴数5,分页:[返回帖子列表] [上一页] [1] [下一页]
 *快速回复:lomboz eclipse 与mysql  [ 回帖是一种美德 :) ]
会员账号 用户名    还没注册?    密码    忘记密码?
内容
  • HTML标签: 不可用
  • UBB标签: 可用
  • 贴图标签: 可用
  • 多媒体标签:可用
  • 表情字符转换:可用
  • 上传图片:不可用
  • 最多15KB
  • 点击表情图即可在帖子中加入相应的表情
                                
    邮件回复 显示签名   [Ctrl+Enter直接提交贴子]

    管理选项锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告