项目全程都是 utf8, mysql 还是出现中文乱码

2015-05-17 12:19:58 +08:00
 Qiangyuan

项目全程都是utf8,hibernte写进数据库的数据取出来在myeclipse的consle下面显示是正常的,为何在数据库那个dos窗口下面显示的中文名就是乱码。注明:我的数据库所有配置都是utf8
然后我又试着手动在dos窗口下用insert语句插入中文,结果是error1406,插不进去,再查看用程序插进去的中文显示乱码。
之后的解决方法:我把my.ini文件中的两处配置改为GBK,然后dos窗口下显示出了正确的中文,我想问的是既然数据库是utf8编码,为何GBK可以把中文读出来,utf8就不行,是不是dos窗口中不支持utf8的显示,所以中文乱码?

4363 次点击
所在节点    MySQL
10 条回复
Septembers
2015-05-17 12:25:13 +08:00
cmd的codepage是跟系统走的
jokester
2015-05-17 12:29:53 +08:00
cmd那个编码坑了多少人..
reeco
2015-05-17 12:34:37 +08:00
用图形化管理工具
wy315700
2015-05-17 12:36:22 +08:00
开发别用Windows了吧,坑特别多。

CMD算一个,还有文件名不区分大小写
ctexlive
2015-05-17 12:36:35 +08:00
win命令终端默认显示gbk编码。可以通过转换把utf8转成GBK输出到终端。…… 参考git for win的解决
msg7086
2015-05-17 12:52:07 +08:00
纠正一下。那个叫命令提示符,不是DOS窗口。DOS窗口早在10多年前就被淘汰了。
Qiangyuan
2015-05-17 12:53:25 +08:00
@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
Qiangyuan
2015-05-17 12:54:42 +08:00
@msg7086 恩,谢谢分享,知道了
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 干这事
Qiangyuan
2015-05-17 13:23:29 +08:00
@SoloCompany set names 'gbk' 对应的是三条语句,我试着运行了一下set character_set_client=utf8,还是乱码,但是运行set names 'gbk' ,就正常了,但是同时里面的 character_set_connection也变成了GBK了,这会不会影响呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191673

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX