当前页面: 开发资料首页 → J2SE 专题 → 乱码问题
乱码问题
摘要: 乱码问题
String sql;
sql = -#34;insert into table1(field1) values(-#39;为什么乱码-#39;)-#34;;
数据库用mysql, 在sql语句里直接写中文,写进数据库后,再读出来乱码,如何解决?
可以把mysql的charset改为utf-8
老问题.....
写进去转换为latin1
gb = new String(iso.getBytes(-#34;GB2312-#34;),-#34;ISO-8859-1-#34;);
取出来转换为gb2312
gb = new String(iso.getBytes(-#34;ISO-8859-1-#34;),-#34;GB2312-#34;);
不改mysql,只改java代码,可以实现不?
或者是全部编码都用utf8,也不用转换来转换取了....
楼上的方法虽然也可以,但是这样不好,因为这样在数据库里看到的还是乱码,不利于调试
mysql的default charset是latin1,改为utf-8是比较理想的办法
楼上的说法有问题...
mysql在客户端看到是乱码,那要看你是用什么东西看(mysql命令行客户端默认的是latin1的编码,如果是用mysql Query来看是utf8的编码),你用默认的是utf8的工具来看latin1的编码当然是乱码了....
楼上地说的有道理,但是也有问题
1.用uft-8的工具来看latin1的编码不一定是乱码,编码方式只是一种对byte的解释方法,如果String本身是用utf-8编的码然后再用latin1重新encode为latin1,那么用uft-8的工具来看,它仍然是好的
2.你用latin1来保存中文时用utf-8和latin1的查看工具都不能看到正常文字,只有用unicode的察看工具才能正常看到中文
mysql 数据库里可能是乱码 把mysql中的字符集改成gb2312 或utf-8 就ok