数据库中文乱码 ORACLE NLS_LANG LINUX LANG

要维护数据库时候 经常使用LINUX系统和远程SHELL客户端连接到ORACLE数据库. 使用上面的SQLPLUS  LSNRCTL RMAN工具

经常检查TRC文件,ORA文件 等.  要是出现乱码就糟糕了.

因为 你来之前别人已经装好了ORACLE 并且设置了中文.....

以前习惯了英文...  所以被中文撞了腰.

终端使用的 PUTTY  SSH  SECUTP   XMAGRE等

这里涉及到系统 和数据库 两块东. 不要搞乱自己哦

EXPORT  LANG  ==> 是定义系统语言的

EXPORT NLS_LANG==> 定义数据库语言的

这些 我一般放在/home/oracle/.bash_profile    其他人喜欢放在/home/oracle/.bashrc里

设置之前了解下系统目前语言和支持的语言.

先讲 系统的LANG

cat /etc/sysconfig/i18n    系统默认语言

/usr/share/i18n/SUPPORTED  包含系统支持的本地语言

/usr/local/share/i18n/SUPPORTED  添加自定义的本地语言到这个文件
 
我的LINUX系统默认是英文 附加了中文支持
因此我的ORACLE用户下的环境变量 LANG=zh_CN.UTF-8
这样 保存 然后source /home/oracle/.bash_profile 生效下
df -h  中文标题出来了.
语言(Language), 地域 (Territory) 和字符集(Codeset)。一个locale的书写格式为: 语言[_地域[.字符集]].
注意是 小写 下划线 大写 点 大写
其他写法默认无效,不提示错误,让你转圈圈去
 
然后接着讲下数据库的NLS_LANG
哈哈 就是前面多了个NLS_
我的数据库默认装的英文 外挂下中文.
所以了先看下数据库的设置
select * from v$NLS_parameters
看主要的NLS_LANGUAGE ; NLS_TERRITORY;NLS_CHARACTERSET
我的上面分别是  AMERICAN;AMERICA;AL32UTF8
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
 
注意狗屎的细节 我们中国没有统一,所以有简体和繁体 .瞧上面 有空格是不? 就是因为这个台湾海峡在,就得上双引号.其他的语言类别就不用""...
另外注意点狗屎问题.ORACLE数据库的字符集 UTF8  不是UTF-8   注意干字.
系统变量有干 数据库则没有.
 
来点官方资料 充点门面. 狗屎的华为一天打三次电话 叫我去面试. 两个月累积下来有20次电话. 爷是专科生好不好啊 别这样玩我.知道你华为要E英文SB级.

Setting the NLS_LANG Environment Variable for Oracle Databases


Follow this procedure to set the NLS_LANG environment variable for Oracle databases. To set the NLS_LANG environment variable for Oracle databases
  1. Determine the NLS_LANG value.
    1. In the data warehouse database, run the command
    SELECT * FROM V$NLS_PARAMETERS
    1. Make a note of the NLS_LANG value, which is in the format [NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]. For example: American_America.UTF8
  2. For Windows:
    1. Navigate to Control Panel > System and click the Advanced tab. Click Environment Variables.
    2. In System variables section, click New.
    3. In the Variable Name field, enter NLS_LANG.
    4. In the Variable Value field, enter the NLS_LANG value that was returned in Step 1. The format for the NLS_LANG value should be [NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]. For example: American_America.UTF8.
  3. For UNIX, set the variable as shown below: setenv NLS_LANG <NLS_LANG> For example: setenv NLS_LANG American_America.UTF8. If your data is 7-bit or 8-bit ASCII and the Informatica Server is running on UNIX, then set NLS_LANG <NLS_LANGUAGE>_<NLS_TERRITORY>.WE8ISO8859P1 CAUTION:  Make sure you set the NLS_LANG variable correctly, as stated in this procedure, or your data will not display correctly.
  4. Reboot the machine after creating the variable.
    The NLS_LANG parameter is stored in the registry under the HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID\NLS_LANG subkey, where ID is the unique number identifying the Oracle home. The NLS_LANG parameter uses the following format:
    NLS_LANG = LANGUAGE_TERRITORY.CHARACTER_SET
    

    where:

    Parameter Description
    LANGUAGE Specifies the language and conventions for displaying messages, day name, and month name.
    TERRITORY Specifies the territory and conventions for calculating week and day numbers.
    CHARACTER_SET Controls the character set used for displaying messages.

    C.2 Commonly Used Values for NLS_LANG

    Table C-1 lists commonly used NLS_LANG values for various operating system locales:

    Table C-1 NLS_LANG Parameter Values

    Operating System Locale NLS_LANG Value
    Chinese (PRC) SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    Chinese (Taiwan) TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950
    English (United Kingdom) ENGLISH_UNITED KINGDOM.WE8MSWIN1252
    English (United States) AMERICAN_AMERICA.WE8MSWIN1252
    French (Canada) CANADIAN FRENCH_CANADA.WE8MSWIN1252
    French (France) FRENCH_FRANCE.WE8MSWIN1252
    German (Germany) GERMAN_GERMANY.WE8MSWIN1252
    Japanese JAPANESE_JAPAN.JA16SJIS
    Korean KOREAN_KOREA.KO16MSWIN949
    Russian RUSSIAN_CIS.CL8MSWIN1251
时间: 2024-10-20 07:25:09

数据库中文乱码 ORACLE NLS_LANG LINUX LANG的相关文章

Net、c# 连接Mysql数据库中文乱码

网上有两种解决方案: 第一种是,每次执行语句的时候都和PHP的类似,先执行 一句“set names utf8”或者“set names gb2312”; 1 MySQLCommand setformat = new MySQLCommand("set names b2312",m_Connection); 2 setformat.ExecuteNonQuery(); 3 setformat.Dispose(); 第二种是,在webconfig里加一句“Charset=gbk”; 1

python读取数据库中文乱码问题

今天朋友遇到过怪问题,在同一个页面显示的2条中文记录一个正常,一个乱码,2条记录分别从不同的表里取出.录入的时候采用直接录入.仔细观察2者区别,发现能正常显示的字段在表中类型为nvarchar,不能的是varchar,试着将其改成nvarchar,问题解决. 因为对sqlserver不熟悉.通过查询手册得知: nvarchar表示以Unicode格式存储可变长度的 数据,所以能显示中文,而varchar是用非unicode存储数据,所以乱码.将Varchar类型设置为nvarchar类型,发现问

Oracle数据库中文乱码问题

最近碰到Oracle乱码问题,刚开始甚是头疼,以前在合肥出差的时候,这种问题也碰到过,当时直接抛给了“乌压压一片”(一个搞数据的同事儿),这次没办法躲过,只好硬着头皮上.虽然我这次碰到的是Oracle乱码问题中的一个,但是我决定将这个乱码问题整理清楚(不整清楚,就觉得身边有个定时炸弹,怕下次整数据库的时候会突然又爆炸). 解决这个问题的关键在于理解字符集的概念,所以在正文开始之前,有必要先提一下字符集的相关知识!(这部分知识,对于解决j2ee中文参数传递过程中出现的乱码,也非常具有参考意义) 一

PL/sql developer连接数据库的问题以及oracle数据库中文乱码的问题

今天第二次配置PL/sql developer,表示很蛋疼,昨天因为动了一个东西然后莫名其妙的就再也连接不了数据库,总是显示各种错误,我动的东西是因为中文会显示乱码,(因为我是用32位的PL/sql developer连接64位的orcale,所以参照网上的教程在添加了一个环境变量名字是NLS_LANG,值是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,然后把注册表下面的这个名字的值也改成了这一样的,然后我再次登陆就显示各种错误了,连改回去都不行,还尝试过重新创建数据库,最

在linux下导入.sql文件,数据库中文乱码

现象描述 我是在aix下面导入如下SQL语句时,数据库中显示乱码. insert into CONFERENCE(CONFERENCEID,SUBCONFERENCEID,ACCESSNUMBER,ACCOUNTID,ALLOCATEDID,ALLOWVIDEOCONTROL,SCREENTYPE,SCREENSWITCHMODE,BOARDNUM,CANRECORD,CHARGEMODE,CONFERENCEMODE,CONFERENCESTATE,CONFERENCETYPE,CYCLETY

使用linux客户端执行shell脚本创建数据库初始化数据库中文乱码问题

定义了一个shell脚本,可以根据其他的多个sql文件创建数据库,并且使用包含初始化数据的sql文件初始化数据库. 在windows下使用linux客户端连接到linux服务器,执行shell脚本后,发现创建出的数据库有中文乱码. 确定是字符集设置问题.查看数据库,发现字符集设置如下,很多还是 latin1. mysql> show variables like 'character_set_%';+--------------------------+---------------------

oracle数据库中文乱码解决办法

登录数据库显示乱码 原因是数据库的客户端和服务端的字符集不同 查出服务端的字符集 SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- SIMPLIFIED CHINESE_CHINA.AL32UTF8 客户端字符集的构成与设定.客户端的字符集是由当前用户的环境变量NLS_LANG设定的. 故在环境变量中设定与服务器端相

Windows使用MySQL数据库中文乱码问题

声明:本文关于MySQL中文乱码问题的解决方案均基于Windows 10操作系统,如果是Linux系统会有较多不适用之处,请谨慎参考. 一.MySQL中文乱码情况 1. sqlDevelpor MySQL客户端中文乱码 sqlDevelopor操作MySQL中文乱码 2. command-line MySQL客户端中文乱码 控制台操作MySQL中文乱码 二.MySQL中文乱码产生原因 Windwos中文系统默认的字符编码集是gbk(扩展国标码,包括简体中文.繁体中文.朝鲜语.日本语等东亚语言),

mysql数据库 中文乱码

看到一篇很好的文章,转录于此 中文乱码似乎是程序编写中永恒的一个话题和难点,就比如MySQL存取中文乱码,但我想做任何事情,都要有个思路才行,有了思路才知道如何去解决问题,否则,即使一时解决了问题,但过后不久又碰到同样的问题可能又会急得抓狂,MySQL中文乱码问题就是如此. 仅仅对MySQL中文乱码的解决而言,我认为主要的一个原则可以归结为五个字:"编码一致性",只要遵循了这个原则,那么中文乱码就不难解决,那么何为"编码一致性"呢?子猴总结为有如下四个方面的编码必须