nls_lang 的設定和字元集問題

來源:互聯網
上載者:User

我的環境是RH linux 4,資料庫oracle 10.2,字元集是AL32UTF8。現象是這樣的:用select查看原資料,中文顯示亂碼,但java應用程式顯示正常。從linux上用sqlplus插入一條中文,再用select 查詢,新插入的這條中文顯示正常,但java應用程式查詢不出來。資料庫字元集用的utf8,看了一下nls_lang的設定是NLS_LANG=american_america.AL32UTF8; 於是改成了NLS_LANG=american_america.UTF8(編輯並運行.bash_profile),重新插入資料,用select查看,中文顯示亂碼,但java應用程式顯示正常。再修改NLS_LANG=american_america.ZHS16GBK,用select查詢,中文顯示正常。

 

    今天又遇到了從sql plus insert 中文的問題,主要還是nls_lang的設定,總結一下。

    首先要明確什麼是字元集。字元集是一個位元組資料的解釋的符號集合,有大小之分,有相互的包括關係,如us7ascii就是zhs16gbk的子集, 從us7ascii到zhs16gbk不會有資料解釋上的問題,不會有資料丟失,Oracle對這種問題也要求從子集到超集的匯出受支援,反之不行。在所有的字元集中utf8應該是最大,因為它基於unicode,雙位元組儲存字元(也因此在儲存空間上佔用更多)。

    其次,一旦資料庫建立後,資料庫的字元集是不能改變的。因此,在設計和安裝之初考慮使用哪一種字元集是十分重要的。資料庫字元集應該是作業系統本地字元集的一個超集。存取資料庫的客戶使用的字元集將決定選擇哪一個超集,即資料庫字元集應該是所有客戶字元集的超集。

現在,介紹一些與字元集有關的NLS_LANG參數,

NLS_LANG格式:

NLS_LANG = language_territory.charset

有三個組成部分(語言、地區和字元集),每個成分控制了NLS子集的特性。其中:language 指定伺服器訊息的語言。

territory 指定伺服器的日期和數字格式。

charset 指定字元集

例如:

AMERICAN_AMERICA.US7SCII

AMERICAN _ AMERICA. ZHS16GBK

 

還有一些子集可以更明確定義NLS_LANG參數:

DICT.BASE 資料字典基本 表版本

DBTIMEZONE 資料庫時區

NLS_LANGUAGE 語言

NLS_TERRITORY 地區

NLS_CURRENCY 本地貨幣字元

NLS_ISO_CURRENCY ISO貨幣字元

NLS_NUMERIC_CHARACTERS 小數字元和組 分隔開

NLS_CHARACTERSET 字元集

NLS_CALENDAR 日曆系統

NLS_DATE_FORMAT 預設的日期格式

NLS_DATE_LANGUAGE 預設的日期語言

NLS_SORT 字元排序序列

NLS_TIME_FORMAT 時間格式

NLS_TIMESTAMP_FORMAT 時間戳記格式

……

查看可選的資料庫字元集:
col nls_charset_id for 99999
col nls_charset_name for a35
col hex_id for a5
select nls_charset_id(value) nls_charset_id,value nls_charset_name,to_char(nls_charset_id     (value),'xxxx') hex_id
from v$nls_valid_values
where parameter = 'CHARACTERSET';

查看當前資料庫字元集配置:
col parameter for a35
col value for a35
select * from v$nls_parameters;
或者:
select * from sys.props$;


本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/wzy0623/archive/2007/06/26/1666769.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.