Oracle NLS_LANG
查询数据库字符集:-- select property_value from database_properties where property_name like 'NLS_CHAR%';
-- select userenv('language') from dual;
2. 数据库客户端字符集
设置环境变量
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
主要是有环境变量NLS_LANG来控制的。
3.操作系统字符集
locale
环境变量 LANG=en_US.UTF-8
注意:
一个误区: 我今天在网上找了很多资料,很多的帖子和技术博客都写,在出现乱码的时候都首先要做的就是将客户端字符集设置和数据库一致,其实这是没有太多根据的。
正确的做法是将客户端的操作系统改成支持中文字符,并将客户端字符集改成和操作系统一致的字符集,这样才能真正的解决问题。
下面是字符编码和oracle字符集设置对应关系:
export NLS_LANG="AMERICAN_AMERICN.AL32UTF8"
export NLS_LANG="CHINESE_CHINA.ZHS16GBK"
Language | Locale ID | NLS_LANG |
English (American) | en_US.UTF-8 | AMERICAN_AMERICA.AL32UTF8 |
English (American) | en_US.ISO-8859-1 | AMERICAN_AMERICA.WE8ISO8859P1 |
English (American) | en_US.ISO-8859-15 | AMERICAN_AMERICA.WE8ISO8859P15 |
English (Australian) | en_AU.UTF-8 | ENGLISH_AUSTRALIA.AL32UTF8 |
English (Australian) | en_AU.ISO-8859-1 | ENGLISH_AUSTRALIA.WE8ISO8859P1 |
English (Australian) | en_AU.ISO-8859-15 | ENGLISH_AUSTRALIA.WE8ISO8859P15 |
English (British) | en_GB.UTF-8 | ENGLISH_UNITED KINGDOM.AL32UTF8 |
English (British) | en_GB.ISO-8859-1 | ENGLISH_UNITED KINGDOM.WE8ISO8859P1 |
English (British) | en_GB.ISO-8859-15 | ENGLISH_UNITED KINGDOM.WE8ISO8859P15 |
English (Ireland) | en_IE.UTF-8 | ENGLISH_IRELAND.AL32UTF8 |
English (Ireland) | en_IE.ISO-8859-1 | ENGLISH_IRELAND.WE8ISO8859P1 |
English (Ireland) | en_IE.ISO-8859-15 | ENGLISH_IRELAND.WE8ISO8859P15 |
German | de_DE.UTF-8 | GERMAN_GERMANY.AL32UTF8 |
German | de_DE.ISO-8859-1 | GERMAN_GERMANY.WE8ISO8859P1 |
German | de_DE.ISO-8859-15 | GERMAN_GERMANY.WE8ISO8859P15 |
French | fr_FR.UTF-8 | FRENCH_FRANCE.AL32UTF8 |
French | fr_FR.ISO-8859-1 | FRENCH_FRANCE.WE8ISO8859P1 |
French | fr_FR.ISO-8859-15 | FRENCH_FRANCE.WE8ISO8859P15 |
Italian | it_IT.UTF-8 | ITALIAN_ITALY.AL32UTF8 |
Italian | it_IT.ISO-8859-1 | ITALIAN_ITALY.WE8ISO8859P1 |
Italian | it_IT.ISO-8859-15 | ITALIAN_ITALY.WE8ISO8859P15 |
Spanish | es_ES.UTF-8 | SPANISH_SPAIN.AL32UTF8 |
Spanish | es_ES.ISO-8859-1 | SPANISH_SPAIN.WE8ISO8859P1 |
Spanish | es_ES.ISO-8859-15 | SPANISH_SPAIN.WE8ISO8859P15 |
Spanish (Mexico) | es_MX.UTF-8 | MEXICAN SPANISH_MEXICO.AL32UTF8 |
Spanish (Mexico) | es_MX.ISO-8859-1 | MEXICAN SPANISH_MEXICO.WE8ISO8859P1 |
Spanish (Mexico) | es_MX.ISO-8859-15 | MEXICAN SPANISH_MEXICO.WE8ISO8859P15 |
Portuguese (Brazilian) | pt_BR.UTF-8 | BRAZILIAN PORTUGUESE_BRAZIL.AL32UTF8 |
Portuguese (Brazilian) | pt_BR.ISO-8859-1 | BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P1 |
Portuguese (Brazilian) | pt_BR.ISO-8859-15 | BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P15 |
Japanese | ja_JP.EUC-JP | JAPANESE_JAPAN.JA16EUC |
Japanese | ja_JP.UTF-8 | JAPANESE_JAPAN.AL32UTF8 |
Korean | ko_KR.EUC-KR | KOREAN_KOREA.KO16KSC5601 |
Korean | ko_KR.UTF-8 | KOREAN_KOREA.AL32UTF8 |
Chinese (simplified) | zh_CN.GB18030 | SIMPLIFIED CHINESE_CHINA.ZHS32GB18030 |
Chinese (simplified) | zh_CN.UTF-8 | SIMPLIFIED CHINESE_CHINA.AL32UTF8 |
Chinese (traditional) | zh_TW.BIG5 | TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5 |
Chinese (traditional) | zh_TW.UTF-8 | TRADITIONAL CHINESE_TAIWAN |