介绍在Red Hat Enterprise Linux上追加日语locale方法。默认日语locale是ja_JP.UTF8,需要使用SHIFT_JIS locale时需要进行额外的安装。
在这里使用Red Hat Enterprise Linux版本为8.6。
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.6 (Ootpa)
RedHat上的locale
Locale定义用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。locale及localectl命令是Linux系统中设定及确认locale的接口。RedHat支持的locale如下。
版本 | 技术支持对象locale | 支持情况 |
---|---|---|
RedHat5 | UTF-8 | 支持中 |
RedHat6 | UTF-8 | 支持中 |
RedHat7 | UTF-8 | 支持中 |
RedHat8 | UTF-8 | 支持中 |
在RedHat8.6后的默认locale如下。
# locale
LANG=en_US.UTF-8 # 语言
LC_CTYPE="en_US.UTF-8" # 语言符号及其分类
LC_NUMERIC="en_US.UTF-8" # 数字
LC_TIME="en_US.UTF-8" # 时间显示格式
LC_COLLATE="en_US.UTF-8" # 比较和排序习惯
LC_MONETARY="en_US.UTF-8" # 货币单位
LC_MESSAGES="en_US.UTF-8" # 信息主要是提示信息,错误信息,菜单等
LC_PAPER="en_US.UTF-8" # 默认纸张尺寸大小
LC_NAME="en_US.UTF-8" # 姓名
LC_ADDRESS="en_US.UTF-8" # 地址
LC_TELEPHONE="en_US.UTF-8" # 电话号码
LC_MEASUREMENT="en_US.UTF-8" # 度量衡表达方式
LC_IDENTIFICATION="en_US.UTF-8" # 对locale自身包含信息的概述
LC_ALL=
上面LANG的部分为语言的设定,格式为<语言>_<地区>.<字符集编码>。常用的语言格式如下。
语言 | 语言 | 备注 |
---|---|---|
英语 | en_US.UTF-8 | 系统默认 |
中文 | zh_CN.UTF8 / zh_CN.gbk | 中文locale的默认是zh_CN.UTF8 |
日语 | ja_JP.UTF8 / ja_JP.SJIS | 日语locale的默认是ja_JP.UTF8 |
导入日语locale(ja_JP.UTF8)
Red Hat Enterprise Linux 8上默认没有日语locale,可使用locale -a命令进行确认。
# locale -a | grep ja_JP
使用 dnf search locale ja 命令查找日语locale,
# dnf search locale ja
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs) 58 MB/s | 46 MB 00:00
Red Hat Enterprise Linux 8 for x86_64 - BaseOS from RHUI (RPMs) 67 MB/s | 52 MB 00:00
Red Hat Ansible Engine 2 for RHEL 8 (RPMs) from RHUI 24 MB/s | 2.5 MB 00:00
RHUI Client Configuration Server 8 38 kB/s | 2.3 kB 00:00
======================================== Summary & Name Matched: locale, ja ========================================
glibc-langpack-ja.x86_64 : Locale data for ja
安装glibc-langpack-ja包导入日语locale。也可以安装 glibc-all-langpacks 包,导入所有的语言。
# dnf install glibc-langpack-ja -y
安装日语locale之后,使用 locale -a确认结果。
# locale -a | grep ja_JP
ja_JP.eucjp
ja_JP.utf8
将系统locale修改为日语locale。
# localectl set-locale LANG=ja_JP.utf8
# localectl set-keymap jp106
# localectl status
System Locale: LANG=ja_JP.utf8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp
输入错误命令时,会显示日语的提示。
导入SHIFT_JIS locale
SHIFT_JIS是JIS(Japanese Industrial Standards)定义的包括日语的各种字符的字符代码,由于MS-DOS和Windows采用SHIFT_JIS为标准的日语字符代码,得以广泛传播。
RedHad上使用日语时使用的locale为ja_JP.UTF8,因此生成文件的字符集也是UTF8。当我们需要将生成的文件转换为SHIFT_JIS时需要添加SHIFT_JIS locale。
需注意的是,RedHat不支持UTF-8以外的语言环境,可追加SHIFT_JIS locale,但是因变更为SHIFT_JIS出现的问题RedHat不提供技术支持。
接下来导入SHIFT_JIS locale。
RedHat8时需要安装glibc-locale-source包,而RedHat7之前的系统不需要安装。
# dnf install glibc-locale-source
使用localedef命令创建locale的character map。
# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
[warning] character map `SHIFT_JIS' is not ASCII compatible, locale not ISO C compliant [--no-warnings=ascii]
执行localedef命令出现的warning信息可无视,可查看RedHat官网信息。
使用locale -a命令确认,ja_JP.SJIS locale已导入。
# locale -a | grep ja_JP
ja_JP.eucjp
ja_JP.sjis
ja_JP.utf8
执行下面的命令设定SJIS环境。也可使用localectl进行修改。
# export LANG=ja_JP.SJIS
# locale
LANG=ja_JP.SJIS
LC_CTYPE="ja_JP.SJIS"
LC_NUMERIC="ja_JP.SJIS"
LC_TIME="ja_JP.SJIS"
LC_COLLATE="ja_JP.SJIS"
LC_MONETARY="ja_JP.SJIS"
LC_MESSAGES="ja_JP.SJIS"
LC_PAPER="ja_JP.SJIS"
LC_NAME="ja_JP.SJIS"
LC_ADDRESS="ja_JP.SJIS"
LC_TELEPHONE="ja_JP.SJIS"
LC_MEASUREMENT="ja_JP.SJIS"
LC_IDENTIFICATION="ja_JP.SJIS"
LC_ALL=
小结
介绍了在Red Hat Enterprise Linux 8上安装日语loacle的方法。
AWS,Azure及阿里云等云服务厂商提供的Red Hat Enterprise Linux等Linux镜像时一般都已安装了日语locale(ja_JP.UTF8),而想使用SHIFT_JIS时就需要系统工程师手动进行安装。