Linux中文乱码问题

上传人:ji****72 文档编号:37520775 上传时间:2018-04-17 格式:DOC 页数:8 大小:43.50KB
返回 下载 相关 举报
Linux中文乱码问题_第1页
第1页 / 共8页
Linux中文乱码问题_第2页
第2页 / 共8页
Linux中文乱码问题_第3页
第3页 / 共8页
Linux中文乱码问题_第4页
第4页 / 共8页
Linux中文乱码问题_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《Linux中文乱码问题》由会员分享,可在线阅读,更多相关《Linux中文乱码问题(8页珍藏版)》请在金锄头文库上搜索。

1、1、linux ssh 连接乱码问题原文件内容为: LANG=“zh_CN.UTF-8“ SUPPORTED=“zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en“ SYSFONT=“latarcyrheb-sun16“有的系统只有: LANG=“zh_CN.UTF-8“ 更改为: LANG=“zh_CN.UTF-8“ LANG=“zh_CN.GB18030“ LANGUAGE=“zh_CN.GB18030:zh_CN.GB2312:zh_CN“ SUPPORTED=“zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en“ SYSF

2、ONT=“latarcyrheb-sun16“LinuxLinux 中文乱码中文乱码问题问题 最近,公司在 XP 系统于 LINUXLINUX 之间传数据时出现了中文乱码中文乱码问题! 首先,解释一下字符集: 汉字编码: * GB2312 字集是简体字集,全称为 GB2312(80)字集,共包括国标简体汉字 6763 个。 * BIG5 字集是台湾繁体字集,共包括国标繁体汉字 13053 个。 * GBK 字集是简繁字集,包括了 GB 字集、BIG5 字集和一些符号,共包括 21003 个 字符。 * GB18030 是国家制定的一个强制性大字集标准,全称为 GB18030- 2000,它的推

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

4、个字节中 1 的个数必须是奇数,若非奇数, 则在最高位 b7 添 1。偶校验规定:正确的代码一个字节中 1 的个数必须是偶数, 若非偶数,则在最高位 b7 添 1。 UTF: Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的,但 是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空 间的目的,对 Unicode 编码的实现方式有所不同。 Unicode 的实现方式称为 Unicode 转换格式(Unicode Translation Format,简称为 UTF)。 * UTF-8: 8bit 变长编码,对于大多数常用字符集(ASCII 中 0

5、127 字符)它只使用单字节, 而对其它常用字符(特别是朝鲜和汉语会意文字),它使用 3 字节。 * UTF-16: 16bit 编码,是变长码,大致相当于 20 位编码,值在 0 到 0x10FFFF 之间,基本上就是 unicode 编码的实现,与 CPU 字序有关。 注意:ASCII char (2) ;UTF-8 宽字符 wchar 4 倍 。兼容性最好的编码就是 UTF-8! 毕竟 GBK/GB2312 是国内的标准,当我们大量使用国外的开源软件时, UTF-8 才是编码界最通用的语言。 在 LinuxLinux 中通过 locale 来设置程序运行的不同语言环境,locale 由

6、ANSI C 提 供支持。locale 的命名规则为_.,如 zh_CN.UTF- 8,zh 代表中文,CN 代表大陆地区,UTF-8 表示字符集。在 locale 环境中,有 一组变量,代表国际化环境中的不同设置: 1. LC_COLLATE 定义该环境的排序和比较规则 2. LC_CTYPE 用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符 是单字节还是多字节,如何打印等。是最重要的一个环境变量。 3. LC_MONETARY 货币格式 4. LC_NUMERIC 非货币的数字显示格式 5. LC_TIME 时间和日期格式 6. LC_MESSAGES 提示信息的语言。

7、另外还有一个 LANGUAGE 参数,它与 LC_MESSAGES 相似,但如 果该参数一旦设置,则 LC_MESSAGES 参数就会失效。 LANGUAGE 参数可同时设 置多种语言信息,如 LANGUANE=“zh_CN.GB18030:zh_CN.GB2312:zh_CN“。 7. LANG LC_*的默认值,是最低级别的设置,如果 LC_*没有设置,则使用该值。类似于 LC_ALL。 8. LC_ALL 它是一个宏,如果该值设置了,则该值会覆盖所有 LC_*的设置值。注意,LANG 的值不受该宏影响。 一个例子: 设置前,使用默认 locale: rootdb-wanggaofei #

8、 locale LANG=“POSIX“ LC_CTYPE=“POSIX“ LC_NUMERIC=“POSIX“ LC_TIME=“POSIX“ LC_COLLATE=“POSIX“ LC_MONETARY=“POSIX“ LC_MESSAGES=“POSIX“ LC_PAPER=“POSIX“ LC_NAME=“POSIX“ LC_ADDRESS=“POSIX“ LC_TELEPHONE=“POSIX“ LC_MEASUREMENT=“POSIX“ LC_IDENTIFICATION=“POSIX“ LC_ALL= 设置后,使用 zh_CN.GDK 中文 locale: rootdb-wan

9、ggaofei # export LC_ALL=zh_CN.GBK rootdb-wanggaofei # locale LANG=zh_CN.UTF-8 LC_CTYPE=“zh_CN.GBK“ LC_NUMERIC=“zh_CN.GBK“ LC_TIME=“zh_CN.GBK“ LC_COLLATE=“zh_CN.GBK“ LC_MONETARY=“zh_CN.GBK“ LC_MESSAGES=“zh_CN.GBK“ LC_PAPER=“zh_CN.GBK“ LC_NAME=“zh_CN.GBK“ LC_ADDRESS=“zh_CN.GBK“ LC_TELEPHONE=“zh_CN.GBK

10、“ LC_MEASUREMENT=“zh_CN.GBK“ LC_IDENTIFICATION=“zh_CN.GBK“ LC_ALL=zh_CN.GBK “C“是系统默认的 locale,“POSIX“是“C“的别名。所以当我们新安装完一个系 统时,默认的 locale 就是 C 或 POSIX。 在 Debian 中安装 locales 的方法如下: 通过 apt-get install locales 命令安装 locales 包 安装完成 locales 包后,系统会自动进行 locale 配置,你只要选择所需的 locale,可以多选。最后指定一个系统默认的 locale。这样系统就会帮

11、你自动 生成相应的 locale 和配置好系统的 locale。 增加新的 locale 也很简单,用 dpkp-reconfigure locales 重新配置 locale 即可。 我们也可手动增加 locale,只要把新的 locale 增加到/etc/locale.gen 文 件中,再运行 locale-gen 命令即可生成新的 locale。再通过设置上面介绍的 LC_*变量就可设置系统的 locale 了。下是一个 locale.gen 文件的样例。 # This file lists locales that you wish to have built. You can fin

12、d a list # of valid supported locales at /usr/share/i18n/SUPPORTED. Other # combinations are possible, but may not be well tested. If you change # this file, you need to rerun locale-gen. # zh_CN.GBK GBK zh_CN.UTF-8 UTF-8 - 在我看来只要搞清楚 LANG 和 SUPPORTED 就 OK 了,其他可能平时也用不太多。 再参考篇文章,如下,是讲如何设置环境变量的。 - 修改 /

13、etc/sysconfig/i18n 文件,如 LANG=“en_US.UTF-8“,xwindow 会显示英文界面, LANG=“zh_CN.GB18030“,xwindow 会显示中文界面。 还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n 修改 $HOME/.i18n 文件,如 LANG=“en_US.UTF-8“,xwindow 会显示英文界面, LANG=“zh_CN.GB18030“,xwindow 会显示中文界面。 这样就可以改变个人的界面语言,而不影响别的用户 修改后的/etc/sysconfig/i18n 文件为: LANG=“en_US.U

14、TF-8“ SUPPORTED=“zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en“ SYSFONT=“latarcyrheb-sun16“ LC_ALL=“en_US.UTF-8“ export LC_ALL 设置完毕后重启或者用 rc.local 使生效 或修改登录用户的.bash_profile 文件加入 export LANG=zh_CN.GB18030 export LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN - - 一定要知道 Windows XP 是 GB2312 的编码,如果你的服务器字符集不是这个,

15、 估计就会是乱码,所以要调整。 有些人在调整的时候,说我改了系统环境变量,结果造成用户内容显示乱码, 无非解决的方法就是两个: 1.用 iconv 转化为目前的编码 2.用你原来使用的编码 看了这两条,你肯定必须要明确,你原来的字符编码是如何的。说来说去,无非就是 LANG SUPPORTED 和你原文件字符集的编码:) 当然了 locale -a 你可以看看目前系统里支持的字符集,如果不支持,还要安 装奥。前两个方法很实用,我试验过。其他方法都是在网上搜到的,呵呵。 * 就是从数据库中取出来时,在存入 linuxlinux 的文件里时,在字符流时制定编码格 式。代码如下: FileOutputStream fos=new FileOutputStream(new File(filePath),true); Writer out=new OutputStreamWriter(fos,“UTF-8“); out.write(s); out.write(“n“); out.flush();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号