[非常急]据说是新手一劫,mysql用latin1编码,中文查询为什么都是乱码?

ronanljy2 2007-08-24 11:57:52
数据库连接用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编码不能改,我是租用别人的空间。有没有好的解决方案?
...全文
992 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfmo 2008-04-18
  • 打赏
  • 举报
回复
pigwen521 2007-08-25
  • 打赏
  • 举报
回复
"mysql的latin1编码不能改,我是租用别人的空间。?
那当你用DOS 操作MYSQL时先运行这样一句命令
"SET NAMES 'GBK';(有没有单引号不记得了)这样一样改了编码,只不过是暂时的,DOS窗口一关就又恢复默认的了
pigwen521 2007-08-25
  • 打赏
  • 举报
回复
改三个地方完全搞定,我也是前不久遇到这问题
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的
ronanljy2 2007-08-25
  • 打赏
  • 举报
回复
不能改啊,我输入这个语句会出错。服务器作了设置
kingsonchen 2007-08-25
  • 打赏
  • 举报
回复
全部改为gb2312编码
懒得去死 2007-08-24
  • 打赏
  • 举报
回复
alter database charset=gb2312;
Tirecoed 2007-08-24
  • 打赏
  • 举报
回复
同意楼上的,改字符集。
即使是租用别人的空间也可以改的。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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