`

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
用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。
3.    LC_MONETARY
货币格式
4.    LC_NUMERIC
非货币的数字显示格式
5.    LC_TIME
时间和日期格式
6.    LC_MESSAGES
提示信息的语言。另外还有一个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:
[root@db-wanggaofei ~]# 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:

[root@db-wanggaofei ~]# export LC_ALL=zh_CN.GBK
[root@db-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"
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。这样系统就会帮你自动生成相应的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 find 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了,其他可能平时也用不太多。再参考篇文章,如下,是讲如何设置环境变量的。

-------------------------------------------

修改 /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.UTF-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的编码,如果你的服务器字符集不是这个,估计就会是乱码,所以要调整。

有些人在调整的时候,说我改了系统环境变量,结果造成用户内容显示乱码,无非解决的方法就是两个:
1.用iconv转化为目前的编码
2.用你原来使用的编码

看了这两条,你肯定必须要明确,你原来的字符编码是如何的。说来说去,无非就是LANG SUPPORTED 和你原文件字符集的编码:)
当然了locale -a你可以看看目前系统里支持的字符集,如果不支持,还要安装奥。
分享到:
评论

相关推荐

    linux乱码解决.

    #### 二、乱码原因分析 1. **系统语言设置错误**:Linux系统默认支持多种语言环境,但若安装时未选择合适的语言包,或者后续修改语言设置时出现问题,则可能导致乱码。 2. **字符编码不匹配**:如果系统内部使用的...

    LINUX中文乱码解决方法

    ### Linux中文乱码解决方法 在使用Linux操作系统的过程中,用户可能会遇到中文显示出现乱码的情况。这种情况通常是由于系统编码设置不正确或者环境变量配置不当所导致的。本文将详细介绍如何解决Linux中的中文乱码...

    Linux乱码问题解决方案.docx

    Linux 乱码问题解决方案 Linux 乱码问题解决方案是指在 Linux 操作系统中出现的乱码问题的解决方法。乱码问题是指在 Linux 系统中,中文字符无法正确显示或乱码的问题。本文将介绍 Linux 乱码问题的解决方案,包括...

    linux下中文乱码问题

    Linux 下中文乱码问题解决方法 Linux 操作系统中,中文乱码问题是一个常见的问题,它是由系统集成的字符集引起的。由于不能正确地使用相对应字符的字符集,因此 OS 不能识别出文字,导致了乱码。解决这个问题的方法...

    SecureCRT等连接Linux出现乱码

    在使用SecureCRT等终端模拟器连接到Linux服务器时,可能会遇到字符编码问题,导致显示乱码。这种情况通常是由于字符集不匹配或者配置不正确引起的。本文将深入探讨这个问题,并提供解决方案。 首先,我们要理解字符...

    Linux系统中文乱码解决完整方案

    Linux系统中文乱码解决完整方案 本文档旨在解决 Linux 系统中文乱码问题,提供了一个完整的解决方案。该问题是由于 Linux 和 Windows 系统下所用户的字符集不同,Linux 系统使用的是 Unicode 字符集,而 Windows ...

    VMware Workstation自动安装和Linux中文乱码问题

    本主题将深入探讨如何在VMware Workstation中进行自动安装Linux系统,并解决可能出现的中文乱码问题。 首先,VMware Workstation允许用户在单个物理机器上运行多个独立的虚拟机。自动安装Linux主要涉及Kickstart...

    linux乱码问题的解决办法

    ### Linux乱码问题解决方案 #### 一、理解乱码产生的原因 在Linux环境中,乱码问题通常是由于不同操作系统之间的字符编码差异所导致的。Windows系统默认采用GBK编码(早期使用GB2312),而Linux则普遍使用UTF-8编码...

    终极解决Linux乱码

    ### 终极解决Linux乱码:中文字符乱码详解与解决方案 在Linux系统中,遇到中文乱码的问题是不少用户和管理员都会遭遇的常见难题。本文将深入解析Linux中文乱码的原因,并提供一系列有效的解决方案,旨在帮助用户...

    解决linux下oracle中文乱码问题,添加中文支持

    解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码...

    Linux解决firefox中文页面乱码问题

    1.由于 firefox 默认是允许网页自己选择字体,在 Linux 上便会出现部分网站的乱码情况。因此可以取消允许页面自己选择字体这个选项便能解决部分乱码情况。  2.倘若还有乱码,以及其他应用程序乱码,则尝试如下...

    jfreechart linux乱码解决方案

    在Linux环境下,使用JFreeChart库进行图表生成时,可能会遇到中文乱码的问题。这是因为JFreeChart默认使用的是西方字符集,不支持中文显示。本文将深入探讨如何解决这一问题,确保在Linux系统中,JFreeChart能正确地...

    linux解决中文乱码问题

    在Linux系统中,中文乱码问题常常困扰着用户,尤其是对于那些需要处理中文文本的开发者和运维人员。这个问题主要出现在终端、文件名、文件内容显示等方面。以下是一些解决Linux环境中中文乱码问题的方法和详细步骤:...

    Linux定时脚本crontab中文乱码.docx

    Linux 定时脚本 crontab 中文乱码解决方案 Linux 系统中的定时脚本 crontab 是一个功能强大的工具,允许用户在指定的时间执行特定的命令或脚本。然而,在使用 crontab 执行 jar 文件时,如果输出结果包含中文字符...

    Linux下中文文件名乱码问题的详解 - CSDN博客1

    在Linux系统中,处理中文文件名时可能会遇到乱码的问题,这是因为Linux系统默认采用的字符编码与Windows系统不同。在Windows系统中,GBK是常见的字符编码格式,而在Linux系统中,UTF-8是默认的字符编码。当在Linux...

    LInux 乱码解决资料搜集

    #### 二、乱码成因分析 Linux系统中的乱码问题,通常由以下几种原因导致: 1. **字符编码不匹配**:Linux系统内部处理文本时默认采用某种字符编码(如UTF-8),而应用程序或用户终端可能采用了不同的编码格式。 2....

    linux安装oracle图形界面乱码问题.docx

    Linux 安装 Oracle 图形界面乱码问题解决方案 Linux 安装 Oracle 图形界面乱码问题是由于多种原因引起的,比如 Linux 操作系统的语言环境、Oracle 安装包的语言环境、Java 显示问题等。下面是解决这个问题的详细...

    使用C+解决Linux中文乱码问题.docx

    在使用C++编程时,遇到Linux系统中处理中文字符出现乱码的问题是一个常见的困扰。这个问题主要涉及字符编码、文件读写、字符串操作以及跨平台兼容性。以下将详细解释这个问题的根源及其解决方案。 首先,我们要了解...

    Linux下JFreechart中文乱码的解决.docx

    Linux下JFreechart中文乱码的解决.docx

Global site tag (gtag.js) - Google Analytics