一、介紹:
1、Oracle字符集是一個字節數據的解釋的符號集合,有大小之分,有相互的包容關係。ORACLE支持國家語言的體系結構允許你使用本地化語言來存儲,處理,檢索
數據。它使數據庫工具,錯誤消息,排序次序,日期,時間,貨幣,數字,和日曆自動適應本地化語言和平臺。
2、如何查詢Oracle的字符集
ORACLE有三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做數據導入的時候,需要這三個字符集都一致才能正確導入。
2.1--查看當前DOS輸出字符集
chcp
--查看當前DOS編碼集
chcp 代碼頁 --修改當前DOS編碼集
2.2
--查看oracle server端的字符集(這個是最終顯示的字符集)
select userenv('language') from dual;
!:由上面可以看到此時的Oracle服務端的編碼集爲:chinese_china.AL32UTF8;(utf-8)
而我們的DOS的編碼集爲:GBK Supports Simplified Chinese(支持簡體中文的GBK)(活動代碼頁 936)
發生亂碼,且爲 “?”。
在這裏給出 代碼頁 對應的編碼集
* 437 — The original IBM PC code page
* 932 — Supports Japanese
* 936 — GBK Supports Simplified Chinese
* 949 — Supports Korean
* 950 — Supports Traditional Chinese
* 1200 — UTF-16LE Unicode little-endian
* 1201 — UTF-16BE Unicode big-endian
* 65000 — UTF-7 Unicode
* 65001 — UTF-8 Unicode
* 10000 — Macintosh Roman encoding (followed by several other Mac character sets)
* 10007 — Macintosh Cyrillic encoding
* 10029 — Macintosh Central European encoding
* 20127 — US-ASCII The classic US 7 bit character set with no char larger than 127
* 28591 — ISO-8859-1 (followed by ISO-8859-2 to ISO-8859-15)
2.3 -- 設置Oracle client端的字符集讓其與Oracle server端一致
從上面的操作我們可以看到oracle server端的編碼集爲 utf-8,我們也把 oracle client端設置爲utf-8)
進入當前用戶下,執行:
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8
或者
set NLS_LANG=american_america.AL32UTF8
此時我們再進入sqlplus看一下中文的顯示情況:
從上面可以看出當 oracle server和oracle client均爲utf-8,而dos的編碼爲 gbk,結果顯示亂碼,且亂碼爲“涓滆帪”;
這應該是utf-8編碼 轉到gbk編碼是發生的亂碼!。
2.4 --將 DOS 編碼集設置爲 oracle 兩端一致的編碼集 utf-8,也就是代碼頁:65001
再次sqlplus,並查詢數據,結果如下:
這時發現還是亂碼,不急我們要修改窗口屬性,改變字體:
在命令行標題欄上點擊右鍵,選擇"屬性"->"字體",將字體修改爲True Type字體"Lucida Console",然後點擊確定將屬性應用到當前窗口。