首页 > 系统 > Linux > 正文

详解Linux中文乱码问题终极解决方法

2019-11-02 16:25:07
字体:
来源:转载
供稿:网友

初入linux的程序员们,经常会受到乱码的问候。可谓“始乱终弃”。因为乱码,并且最终放弃了linux的不在少数。好吧,言归正传,下面来看一下linux乱码的具体解决办法吧。

方法一: 修改/root/.bash_profile文件,增加export LANG=zh_CN.GB18030

该文件在用户目录下,对于其他用户,也必须相应修改该文件。

使用该方法时putty能显示中文,但桌面系统是英文,而且所有的网页中文显示还是乱码

方法二:

修改/etc/sysconfig/i18n文件 

#LANG="en_US.UTF-8"#SUPPORTED="en_US.UTF-8:en_US:en"#SYSFONT="latarcyrheb-sun16"

修改为: 

LANG="zh_CN.GB18030"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"SUPPORTED="zh_CN.GB18030:zh_CN:zh"SYSFONT="lat0-sun16"SYSFONTACM="8859-15"

参考:

Linux中文乱码问题

最近,公司在XP系统于LINUX之间传数据时出现了中文乱码问题!

首先,字符集:

汉字编码:

* GB2312字集是简体字集,全称为GB2312(80)字集,共包括国标简体汉字6763个。 * BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个。 * GBK字集是简繁字集,包括了GB字集、BIG5字集和一些符号,共包括21003个字符。 * GB18030是国家制定的一个强制性大字集标准,全称为GB18030-2000,它的推出使汉字集有了一个“大一统”的标准。

ASCII:

American Standard Code for Information Interchange,美国信息交换标准码。 目前计算机中用得最广泛的字符集及其编码,由美国国家标准局(ANSI)制定。 它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。 ASCII字符集由控制字符和图形字符组成。 在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。 所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。 奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1。

偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

UTF:

Unicode 的实现方式不同于编码方式。 一个字符的Unicode编码是确定的,但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现 方式有所不同。 Unicode的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF)。 * UTF-8: 8bit变长编码,对于大多数常用字符集(ASCII中0~127字符)它只使用单字节,而对其它常用字符(特别是朝鲜和汉语会意文字),它使用3字节。 * UTF-16: 16bit编码,是变长码,大致相当于20位编码,值在0到0x10FFFF之间,基本上就是unicode编码的实现,与CPU字序有关。

注意:ASCII char (2) ;UTF-8 宽字符 wchar 4倍 。兼容性最好的编码就是UTF-8! 毕竟GBK/GB2312是国内的标准,当大量使用国外的开源软件时,UTF-8才是编码界最通用的语言。

在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中 文,CN代表大陆地区,UTF-8表示字符集。

在locale环境中,有一组变量,代表国际化环境中的不同设置:

1. LC_COLLATE

定义该环境的排序和比较规则

2. LC_CTYPE

用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表