拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle基础知识
  3. 图灵小队
  4. 正文

Linux 操作系统中文、英文切换,LANG与NLS_LANG字符集的区别(重点)

2021年3月30日 4286点热度 1人点赞 2条评论

目录

  • 最最重要的是:
    • 一、首先判断linux系统是否安装或支持中文系统
      • 1、通过locale -a查看
      • 2、如何将系统进行中英文字符切换
        • (1)6系列位置:
        • (2)7/8系列位置:
      • 3、如何在系统进行上述2中英文切换后,用户登录后自动切换为相应的系统语言
      • 4、如何在系统进行上述2中英文切换后,用户登录后保持为之前的语言
        • (1)如系统由英文切换成了中文,让root用户仍然保持英文。
        • (2)如系统由中文切换成了英文文,让root用户仍然保持中文。
      • 5、如果系统有桌面,想让桌面,文档等显示中文,设置完2后,如下操作
        • (1)可以进入桌面确认一下切换语言(“更新名称”或“Update names”)
    • 二、LANG和NLS_LANG的区别
      • 1、两者区别
      • 2、两者设置的值:
        • (1)LANG一般设置为两种:
        • (2)NLS_LANG也设置为两种:
      • 3、对于客户端(sqlplus,pl/sql developer)
        • (1)如果sqlplus中插入中文报错,则设置.bash_profile
        • (2)如果pl/sql developer中插入中文报错,则设置
      • 4、ORACLE用户下的几个测试:
        • 前提:不管系统的/etc/locale.cnf中和用户的.bash_profilebash_profile中的LANG参数,
        •  (1)oracle的.bash_profile参数只要设置为并生效:
        • (2)oracle的.bash_profile参数只要设置为并生效:
        • (3)结论:
    • 三、还有一种情况,案例
      • 1、系统A

最最重要的是:

先确认SSH工具(如CRT)中的显示编码,一定为UTF8模式再进行如下操作。否则即使系统设置为中文也是白搭。

一、首先判断linux系统是否安装或支持中文系统

1、通过locale -a查看

只要有如下几个过滤选项,则说明安装了中文包,现在版本linux(Centos,redhat,oracle linux) 6/7/8系列都默认安装中文语言。

[root@yczbora /]# locale -a|grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf-8

2、如何将系统进行中英文字符切换

英文切换为中文:将LANG="en_US.UTF-8"设置为LANG="zh_CN.UTF-8"

中文切换为英文:将LANG="zh_CN.UTF-8"设置为LANG="en_US.UTF-8"

(1)6系列位置:

[root@test~]# vi /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
#LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"

(2)7/8系列位置:

[root@test ~]# vi /etc/locale.conf 
#LANG="en_US.UTF-8"
LANG="zh_CN.UTF-8"

3、如何在系统进行上述2中英文切换后,用户登录后自动切换为相应的系统语言

确保在所有用户的变量下.bash_profile,.bashrc,/etc/profile下,都没有限定系统语言的变量:

LANG="en_US.UTF8" 或LANG="zh_CN.UTF-8"

4、如何在系统进行上述2中英文切换后,用户登录后保持为之前的语言

(1)如系统由英文切换成了中文,让root用户仍然保持英文。

设置增加如下:

[root@yczbora ~]# vi ~/.bash_profile
export LANG="en_US.UTF-8"

(2)如系统由中文切换成了英文文,让root用户仍然保持中文。

设置增加如下:

[root@yczbora ~]# vi ~/.bash_profile
export LANG="zh_CN.UTF-8"

5、如果系统有桌面,想让桌面,文档等显示中文,设置完2后,如下操作

(1)可以进入桌面确认一下切换语言(“更新名称”或“Update names”)

则家/home目录下的所有目录显示才会切换为中文/英文,如果不进入系统界面确认,则不会主动切换为中文/英文。

二、LANG和NLS_LANG的区别

1、两者区别

LANG是针对Linux系统的语言、地区、字符集的设置,对linux下的应用程序有效,如date;
NLS_LANG是针对Oracle语言、地区、字符集的设置,对oracle中的工具有效,如sqlplus,pl/sql developer;

2、两者设置的值:

(1)LANG一般设置为两种:

LANG=en_US.UTF8                          #############系统或当前用户为英文模式
LANG=zh_CN.UTF8                          #############系统或当前用户为中文模式

(2)NLS_LANG也设置为两种:

NLS_LANG=AMERICAN_AMERICA.UTF8;          #########linux下使用
NLS_LANG=AMERICAN_AMERICA.ZH16GBK;      #######windows下经常使用

3、对于客户端(sqlplus,pl/sql developer)

(1)如果sqlplus中插入中文报错,则设置.bash_profile

NLS_LANG=AMERICAN_AMERICA.UTF8

(2)如果pl/sql developer中插入中文报错,则设置

设置方法:计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第1步查到的值, 如:AMERICAN_AMERICA.ZHS16GBK;

4、ORACLE用户下的几个测试:

前提:不管系统的/etc/locale.cnf中和用户的.bash_profilebash_profile中的LANG参数,

都设置为中文模式或者是英文模式或者为相反模式

 (1)oracle的.bash_profile参数只要设置为并生效:

export NLS_LANG=AMERICAN_AMERICA.UTF8,
就可以在SQL plus下写入中文字符,且可以展示。

(2)oracle的.bash_profile参数只要设置为并生效:

export NLS_LANG= ,
在SQL plus下就无法写入中文字符,或展示。

(3)结论:

NLS_LANG只是为oracle客户端sqlplus或其他客户端工具是否支持中文而生,所以不管何种情况:

NLS_LANG都设置为AMERICAN_AMERICA.UTF8(数据库字符集是UTF8的)。
NLS_LANG都设置为AMERICAN_AMERICA.ZHS16GBK(数据库字符集是ZHS16GBK的)

三、还有一种情况,案例

前提是SSH客户端设置未utf8字符显示。

echo $LANG后,出现en_US;有些系统是en_US.utf8。

这种情况,如果系统设置en_US.utf8,使用中文输入。在en_US语言系统下是乱码的。需要将$LANG=en_US.utf8才可以。

1、系统A

更改为SET $LANG=en_US.utf8,虽然还是显示en_US,但可以读取中文了。

(2023-02-02更新)

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2023年8月11日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

  • admin

    的

    2021年6月5日
  • admin

    123

    2021年6月5日
  • 您需要 登录 之后才可以评论

    COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    鲁ICP备2021020523号

    鲁ICP备2021020523号