如何解决mysql乱码问题
2011-01-11 22:25
274 查看
问题是这样的,我用struts来做一个用户注册的界面,其中username和sex这2个字段是需要中文的
但是我在Action调用UserDao来进行插入用户类的时候,发生了乱码的问题
1.从jsp页面上(gb2312的页面)上传到Action类的UserForm的值应该是乱码的,这时候我们要做第一步的转换编码
2.从Action类调用UserDao来进行对数据库的数据插入时,我们也需要首先设定数据库的编码格式,否则也会出现乱码
解决方法一:
1.首先在UserDao中增加一个编码转换的函数bx
2.在获取中文之后,因为中文是乱码的,必须把编码弄成iso-8859-1才能正常显示中文,所以在插入数据库之前,
要把需要转换的中文利用bx函数进行转换
3.修改连接字符串url
增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写
4.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文
注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312
解决方法二:
1.因为在jsp页面传递到ActionForm的时候,中文已经是乱码的,所以我们可以在ActionForm中的reset函数直接就把编码设置为GBK
2.修改连接字符串url
增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写
3.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文
注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312
通过以上2种方法其中之一都可以实现mysql乱码的解决,记住步骤
1.转换乱码为中文
2.url修改,数据库编码格式为gbk
3.中文字段必须为中文编码
但是我在Action调用UserDao来进行插入用户类的时候,发生了乱码的问题
1.从jsp页面上(gb2312的页面)上传到Action类的UserForm的值应该是乱码的,这时候我们要做第一步的转换编码
2.从Action类调用UserDao来进行对数据库的数据插入时,我们也需要首先设定数据库的编码格式,否则也会出现乱码
解决方法一:
1.首先在UserDao中增加一个编码转换的函数bx
public String bx(String str) { try { byte b[] = str.getBytes("iso-8859-1"); str = new String(b); } catch (Exception e) { } return str; }
2.在获取中文之后,因为中文是乱码的,必须把编码弄成iso-8859-1才能正常显示中文,所以在插入数据库之前,
要把需要转换的中文利用bx函数进行转换
ps = con.prepareStatement("insert into users(name,password,adds,sex,email,age,times) values(?,?,?,?,?,?,?)"); ps.setString(1, bx(uf.getName())); ps.setString(2, uf.getPassword()); ps.setString(3, bx(uf.getAdds())); ps.setString(4, bx(uf.getSex())); ps.setString(5, uf.getEmail()); ps.setString(6, uf.getAge()); ps.setString(7, ts);
3.修改连接字符串url
String url = "jdbc:mysql://localhost:3306/" + dbname+"?useUnicode=true&characterEncoding=gbk";
增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写
4.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文
注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312
解决方法二:
1.因为在jsp页面传递到ActionForm的时候,中文已经是乱码的,所以我们可以在ActionForm中的reset函数直接就把编码设置为GBK
public void reset(ActionMapping mapping, HttpServletRequest request) { try { request.setCharacterEncoding("GBK"); } catch (Exception e) { // TODO: handle exception } }
2.修改连接字符串url
String url = "jdbc:mysql://localhost:3306/" + dbname+"?useUnicode=true&characterEncoding=gbk";
增加"?useUnicode=true&characterEncoding=gbk"增加这一串代码,主要是设定数据库的编码格式为gbk,记得是小写
3.数据库是什么编码不重要,重要的是存储中文的字段的编码必须是gb2312,因为这样才能存储中文
注意name的Column Charset是gb2312 ,sex和adds字段同理,把Column Charset改为gb2312
通过以上2种方法其中之一都可以实现mysql乱码的解决,记住步骤
1.转换乱码为中文
2.url修改,数据库编码格式为gbk
3.中文字段必须为中文编码
相关文章推荐
- 再谈乱码问题,如何解决MYSQL数据中文乱码问题
- 如何解决MySQL 5.5的中文乱码问题
- 谈乱码问题,如何解决MYSQL数据中文乱码问题
- 如何用dot net连接MySQL,及中文乱码问题解决
- 如何解决python连接数据库编码问题(python传数据到mysql乱码)'ascii' codec can't encode _mysql_exceptions.OperationalError: (1366, "Incorrect string value:?
- 出现中文乱码如何解决(虚拟机MySQL的编码问题)
- 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
- 如何解决MYSQL数据中文乱码问题
- 如何解决mysql中文入库乱码问题
- 如何解决MySQL字符集乱码问题
- 如何解决PDO-MySQL的乱码问题
- 如何解决MySQL字符集乱码问题
- 如何解决jsp+mysql出现的中文乱码问题
- 如何解决mysql导入数据乱码问题
- mysql 数据库编码是UTF-8 如何解决乱码问题
- 如何解决Php(adodb)输出Mysql中数据乱码问题!
- 如何解决mysql导入数据乱码问题
- mysql如何解决中文乱码问题
- 如何解决mysql乱码问题
- 如何解决jsp+mysql出现的中文乱码问题