CentOS下通过locale来设置字符集

CentOS与Ubuntu Locale设置
本文介绍了在CentOS和Ubuntu系统中如何设置locale环境变量,包括语言、地区和字符集编码,以实现不同语言环境的支持。详细解释了locale的命名规则及LC_COLLATE、LC_CTYPE等关键环境变量的作用。

转载:http://www.centoscn.com/CentOS/config/2013/1013/1784.html

 

 在Centos中通过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:

引用
debian:~# 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:

引用
debian:~# export LC_ALL=zh_CN.GBK
debian:~# 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


要在Shell中正常显示系统的中文提示信息和支持中文输入。LANG和shell的编码配置需一致,并安装有中文locale。如:LANG和 shell的编码都配置成zh_CN.utf8,并安装有zh_CN.utf8这个locale。如果shell和LANG配置不同,则中文显示乱码;如 果LANG里设置的locale没有安装,则不能显示系统的中文提示信息,只会显示英文提示信息。

 


 

 

Ubuntu和Centos中英文locale设置

Ubuntu


  1.    modify /etc/default/locale and add the following to it
    LANG=en_US.UTF-8
    LANGUAGE=en_US.en
   2.  echo “export LANGUAGE=en_US:en” >> ~/.bashrc

CentOS

  设置 loacle 为中文环境

1)

#  vim /etc/sysconfig/i18n

LANG="zh_CN.UTF-8"

2).       设置 loacle 为英文环境 

#  vim /etc/sysconfig/i18n

LANG="en_US.UTF-8"

 

转载于:https://www.cnblogs.com/pengdonglin137/p/3532615.html

<think>我们正在处理用户的问题:在CentOS7.9中设置字符集为AL32UTF8。注意:AL32UTF8是Oracle数据库中的字符集名称,它实际上就是UTF-8编码。在Linux操作系统中,我们通常设置的是系统的locale(区域设置)来指定字符编码,而不是直接设置一个名为AL32UTF8的字符集。在CentOS中,我们可以通过设置系统的locale为UTF-8来实现。但是,用户的问题可能是在安装Oracle数据库时设置字符集?或者只是设置操作系统的字符集?由于问题中没有明确说明,我们将按照设置操作系统环境的字符集为UTF-8来回答,因为AL32UTF8是Oracle对UTF-8的称呼,而在Linux系统中我们使用UTF-8。另外,如果用户指的是在Oracle数据库中设置字符集,那么这需要在安装Oracle数据库时选择或者通过修改数据库参数来实现。由于问题中提到了CentOS7.9,我们假设用户可能是在准备安装Oracle的环境,因为Oracle官方文档推荐使用AL32UTF8作为数据库字符集,并且要求操作系统使用UTF-8locale。根据引用[1]中提到的,确保终端可以输入中文,即设置LANG为en_US.utf8或zh_CN.utf8等UTF-8编码的locale。因此,我们分两种情况:1.设置操作系统的locale为UTF-8。2.如果用户指的是Oracle数据库,那么在安装Oracle时选择AL32UTF8字符集,并确保操作系统的locale是UTF-8。由于用户没有明确说明,我们首先回答如何设置操作系统的字符环境为UTF-8(即相当于AL32UTF8在操作系统层面的对应)。步骤:1.检查当前系统locale设置。2.安装和生成所需的locale(如果尚未生成)。3.设置系统全局locale或用户级locale。详细步骤:1.检查当前locale:在终端输入:`locale`或者`env|grepLANG`(如引用[1]所示)2.如果系统中没有en_US.utf8或zh_CN.utf8等UTF-8的locale,则需要生成。查看可用locale列表:`locale-a`如果列表中没有en_US.utf8,则安装:编辑/etc/locale.gen文件,找到en_US.UTF-8UTF-8这一行,去掉注释(如果使用中文,也可以选择zh_CN.UTF-8)。然后运行命令:`locale-gen`3.设置系统全局locale(需要root权限):方法一:修改/etc/locale.conf文件,例如:LANG="en_US.UTF-8"LC_ALL="en_US.UTF-8"方法二:使用命令临时设置(重启后失效):exportLANG=en_US.UTF-8exportLC_ALL=en_US.UTF-8注意:全局设置会影响所有用户,如果只想修改当前用户,可以修改用户家目录下的.bashrc或.bash_profile,添加上述export命令。4.重新登录或执行source命令使设置生效。5.验证:执行`locale`命令查看是否生效。如果用户的问题是在Oracle数据库中设置字符集,那么需要:1.确保操作系统locale为UTF-8(如上所述)。2.在安装Oracle数据库时,在安装向导中选择字符集为AL32UTF8。3.对于已安装的数据库,修改字符集比较复杂,通常需要重建数据库或者使用ALTERDATABASECHARACTERSET命令(有风险,需谨慎)。由于用户没有明确说明,我们假设用户需要设置操作系统的字符集为UTF-8(即与Oracle的AL32UTF8对应的系统环境设置)。因此,回答如下:</think>### 在 CentOS 7.9 中设置 AL32UTF8 字符集 AL32UTF8 是 Oracle 数据库的 Unicode 字符集(等同于 UTF-8 编码)。在 CentOS 7.9 中,需通过**操作系统环境变量**和**数据库配置**两步实现: --- #### **1. 设置操作系统 Locale** ```bash # 检查当前 Locale locale env | grep LANG # 生成并启用 UTF-8 Locale(如未安装) sudo localedef -c -f UTF-8 -i en_US en_US.UTF-8 # 永久修改系统 Locale sudo vi /etc/locale.conf ``` 修改内容为: ```ini LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 ``` 保存后生效: ```bash source /etc/locale.conf ``` > **验证**:终端执行 `locale`,确保输出包含 `en_US.UTF-8`[^1]。 --- #### **2. 配置数据库字符集** ##### **A. MySQL/MariaDB** ```sql -- 检查当前字符集 SHOW VARIABLES LIKE 'character_set%'; -- 修改配置文件 sudo vi /etc/my.cnf ``` 在 `[mysqld]` 段添加: ```ini character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` 重启服务: ```bash sudo systemctl restart mysqld ``` > **注意**:`utf8mb4` 是 MySQL 对完整 UTF-8 的实现[^2]。 ##### **B. Oracle 数据库** 安装时指定字符集: ```bash # 在安装向导中手动选择 AL32UTF8 ./runInstaller ``` 或修改已安装实例: ```sql ALTER DATABASE CHARACTER SET AL32UTF8; ``` > **警告**:修改现有数据库字符集需备份数据,操作有风险[^3]。 --- #### **常见问题解决** - **终端无法输入中文**: 确保 SSH 客户端字符集设置为 UTF-8,并检查 `env | grep LANG` 输出含 `UTF-8`[^1]。 - **字符集不生效**: 重启数据库服务,并确认配置文件无语法错误: ```bash systemctl status mysqld # 检查服务状态 mysql -e "SHOW VARIABLES LIKE 'char%';" # 验证配置 ``` --- ### 关键验证点 1. 操作系统 Locale 为 `en_US.UTF-8` 2. 数据库字符集设为 `utf8mb4` (MySQL) 或 `AL32UTF8` (Oracle) 3. 应用程序连接时明确指定 UTF-8 编码 通过上述步骤,系统与数据库将统一使用 AL32UTF8/UTF-8 字符集,支持多语言数据处理[^1][^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值