项目全程都是utf8,hibernte写进数据库的数据取出来在myeclipse的consle下面显示是正常的,为何在数据库那个dos窗口下面显示的中文名就是乱码。注明:我的数据库所有配置都是utf8
然后我又试着手动在dos窗口下用insert语句插入中文,结果是error1406,插不进去,再查看用程序插进去的中文显示乱码。
之后的解决方法:我把my.ini文件中的两处配置改为GBK,然后dos窗口下显示出了正确的中文,我想问的是既然数据库是utf8编码,为何GBK可以把中文读出来,utf8就不行,是不是dos窗口中不支持utf8的显示,所以中文乱码?
1
Septembers 2015-05-17 12:25:13 +08:00 via Android
cmd的codepage是跟系统走的
|
2
jokester 2015-05-17 12:29:53 +08:00
cmd那个编码坑了多少人..
|
3
reeco 2015-05-17 12:34:37 +08:00 via iPhone
用图形化管理工具
|
4
wy315700 2015-05-17 12:36:22 +08:00 1
开发别用Windows了吧,坑特别多。
CMD算一个,还有文件名不区分大小写 |
5
ctexlive 2015-05-17 12:36:35 +08:00 via Android
win命令终端默认显示gbk编码。可以通过转换把utf8转成GBK输出到终端。…… 参考git for win的解决
|
6
msg7086 2015-05-17 12:52:07 +08:00
纠正一下。那个叫命令提示符,不是DOS窗口。DOS窗口早在10多年前就被淘汰了。
|
7
Qiangyuan OP @reeco 我又将所有配置改为utf8
| character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | 然后在图形化管理工具里查询下,确实中文都是正确的,但dos下查询就又都是乱码了,那是不是不管了呢,整个项目都是统一utf8编码,只有在dos下操作才会乱码,我怕改了my.ini配置,虽然可以显示中文,但感觉要用就统一用utf8,把一部分给位GBK,说不定会造成后面开发进程可能出现的问题,所以我感觉这应该就是dos窗口编码显示的问题吧 @ctexlive |
9
SoloCompany 2015-05-17 13:13:06 +08:00
方法1
改 mysql.cnf 让 client 使用 GB18030 编码, 或者在 mysql 命令行中输入 mysql set names gb18030 (如果不支持则改成 gbk) 方法2 在 cmd shell 里面输入 chcp 65001 最后的建议 少用 windows 干这事 |
10
Qiangyuan OP @SoloCompany set names 'gbk' 对应的是三条语句,我试着运行了一下set character_set_client=utf8,还是乱码,但是运行set names 'gbk' ,就正常了,但是同时里面的 character_set_connection也变成了GBK了,这会不会影响呢?
|