mpstat 发表于 2012-06-01 15:45

mysql终端不能输入中文

本帖最后由 mpstat 于 2012-06-01 16:00 编辑

现在有两台机器,A,B
A上有mysql
当A的locale设置成en_US的话,如果从A上登陆本地mysql,则终端输入中文的时候,显示的是乱码.
如果改变A的locale为任何一个其它值,我试了很多,比如export LC_ALL='zh_CN.utf8'如果从A上登陆本地mysql,则终端输入中文的时候没有显示任何东西.就跟没反应一样

但从机器B上登陆A的mysql,就能正常.B的locale也是en_US

两个终端都是UTF8.A的数据库的所有charset都是默认的latin1.新装的还没有动过

刚才看了一下,好像和终端的版本有关系
A的mysql终端:
mysql> status
--------------
mysqlVer 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) usingEditLine wrapper
B的mysql终端
mysql> status
--------------
mysqlVer 14.7 Distrib 4.1.20, for redhat-linux-gnu (x86_64) using readline 4.3

求解,这是什么原理

mpstat 发表于 2012-06-01 16:33

解决了问题.但不知道是什么原因

我重新编译了mysql,configure的时候加上readline的选项.把终端编译成readline的版本就可以了
很奇怪为啥editline这玩意不能输中文,还是要设置个啥.搞不懂
现在的状态是这样的

mysql> status
--------------
mysqlVer 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) using readline 5.0

ning_lianjie 发表于 2012-06-04 16:34

回复 2# mpstat

通过 readline,可以方便的在命令行上面移动,增删,复制,粘贴,搜索
readline是方便命令书写与编辑的,还没有遇到与字符集相关的问题.
建议楼主看一下mysql的字符集设置show variables like 'char%';
– character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集


   

cenalulu 发表于 2012-06-04 19:19

本帖最后由 cenalulu 于 2012-06-04 19:20 编辑

回复 1# mpstat


    由于终端输入中文不涉及将命令发到server端,所以和mysql的字符集没有关系,这个先要明确。
其次终端对于中文的响应由2个因素决定

[*]linux的LC_LOCALE 变量
[*]终端(cmd,SecureCRT等)支持的字体类型有关

所以要能正常显示中文其实就是统一这两者的字符集。例如 LC_ALL=zh_cn.UTF8 且终端支持UTF8中文字体。

wang1352083 发表于 2015-08-14 15:21

设置了 LC_LOCALE 和 LC_ALL 为 zh_CN.UTF-8 mysql 里还是无法输入中文,显示是输入状态
电脑是OS X yosemite
页: [1]
查看完整版本: mysql终端不能输入中文