[非常急]据说是新手一劫,mysql用latin1编码,中文查询为什么都是乱码?
数据库连接用useUnicode=true&characterEncoding=ISO-8859-1
insert用PreparedStatement没问题,但是查询用PreparedStatement和Statement都查不到。
我用New String(xxx.getBytes( "code1 "), "code2 ");code1和code2用ISO-8859-1,UTF-9,gb2312反复试过都不行,特别是name = new String(name.getBytes( "ISO8859_1 "), "UTF-8 ");,控制台已经是中文了,查询还是不行。
加上stmt.execute( "set names 'gb2312 ' ");或者其他的,也没用,或者直接报错说用like查询,查询的字符集不匹配。
mysql的latin1编码不能改,我是租用别人的空间。有没有好的解决方案?
------解决方案--------------------改三个地方完全搞定,我也是前不久遇到这问题
1:改一下你的MYSQL配置,因为一开始他的默认安装配置编码是latin1(瑞士国家的编码,因为MYSQL是瑞士公司的,当然支持中文),方法如下:找到F:\MySQL\my.ini文件,中间有二句是default-character-set=latin1 改成default-character-set=GBK
2:在建表的时候最后加default character set gbk(编码设为GBK当然也可为其它,建议为GBK)如CREATE TABLE student (
name char(20) NOT NULL,
password char(20) NOT NULL)
default character set gbk;
3:在连接数据库的程序中的URL这样写:Connectioncon=DriverManager.getConnection "jdbc:mysql://localhost:3306/你的数据库名?useUnicode=true&characterEncoding=gbk ", "root ", "你的密码 ");
万事OK,改了第1步当然要重新打开一些东东,如DOS窗口(假如你在DOS下建表),还不行的话就不知道咯~_~,%95会OK的
------解决方案-------------------- "mysql的latin1编码不能改,我是租用别人的空间。?
那当你用DOS 操作MYSQL时先运行这样一句命令
"SET NAMES 'GBK ';(有没有单引号不记得了)这样一样改了编码,只不过是暂时的,DOS窗口一关就又恢复默认的了
------解决方案--------------------下面文章对你会有帮助
http://www.programmerstudy.com/database/mysql/20084/142.html