Linux下ssh客户端显示中文乱码问题分析

Windows下通过ssh客户端工具连接Linux服务器,操作数据库时,如果涉及到中文的操作,需要考虑三个方面的内容
A,客户端工具使用的字符集语言
客户端工具编码
B,操作系统使用的LANG环境变量

[gbasedbt@gbasehost01 ~]$ echo $LANG
zh_CN.GB18030

C,数据库使用的字符集

[gbasedbt@gbasehost01 ~]$ echo $DB_LOCALE
zh_CN.GB18030-2000
[gbasedbt@gbasehost01 ~]$ echo $CLIENT_LOCALE
zh_CN.GB18030-2000

对于在操作系统中显示中文,需要满足AB,即:客户端使用的字符集语言及环境变量LANG需要一致或者兼容
如果文本文件的类型是ISO-8859 text
1,如果LANG是zh_CN.GB18030,而客户端工具使用的字符集语言是UTF-8,将会显示乱码
客户端编码与LANG不一致,乱码
2,如果LANG是zh_CN.GB18030,客户端工具使用的字符集语言是GB18030,将能正常显示
客户端编码与LANG匹配,兼容文本文件类似
如果文本文件的类型是UTF-8 Unicode text
1,如果LANG是zh_CN.UTF-8,而客户端工具使用的字符集语言是GB18030,将会显示乱码
客户端工具和LANG不匹配,乱码
2,如果LANG是zh_CN.UTF-8,客户端工具使用的字符集语言是UTF-8,将能正常显示
客户端工具编码和LANG匹配,文件类型匹配,显示正常

对于数据库来说,数据库的字符集需要输入类型使用文本文件的类型兼容,不然将会报错或者显示异常。
1,数据库字符集使用GB18030-2000,文本文件类型是ISO-8859 text
数据库字符集与输入的编码匹配,正常显示
2,数据库字符集使用GB18030,文本文件的类型是UTF-8,显示乱码
显示异常
3,数据库字符集使用UTF-8,文本文件类型是UTF-8,正常显示
在这里插入图片描述
4,数据库字符集使用UTF-8,文本文件类型是GB18030,将会报34389错误
在这里插入图片描述

分析结果:
当客户端工具编码、LANG环境变量、数据库字符集和输入的文本的编码类型 四者相匹配时,能完全正常显示。如果数据库字符集编码输入的文本的编码类型不匹配(或者兼容),可能出现错误!

猜你喜欢

转载自blog.csdn.net/liaosnet/article/details/107914878
今日推荐