Oracle資料庫字符集淺析
作者:IT168 譚懷遠 2009-04-07
【IT168技術文件】
作為dba,在維護一個應用系統時,也許會遇到這樣的問題,使用者會抱怨在通過介面查詢資料庫中的資料時,顯示出來的卻是亂碼,於是懷疑儲存的資料成了亂碼。特別是資料庫中存放了簡,繁2種字型的字元時,更容易出現這種問題,本文主要討論資料庫在儲存簡,繁體字元時出現的各種問題。
? 什麼是資料庫字符集(database characterset)?
資料庫字符集通常可以理解為資料庫提供的儲存某種語言字元的一種環境.舉個例子:英文,法文等文字每個字元佔一個位元組,而漢字一個字元需要2個位元組,這就要求資料庫提供相應的儲存環境來儲存這些字元.
? 字符集在資料庫中的應用。
資料庫在建立時是需要指定字符集的,它決定了以後資料庫中所允許存放的語言字元,所以在系統設計當中,應當充分考慮資料庫中可能存放的語言文字。在我們周圍最常見的資料庫字符集的問題就是儲存,顯示簡體,繁體字元的問題.
? 和漢字相關的字符集
目前存放漢字的資料庫最常用的兩種字符集是ZHS16CGB231280和ZHS16GBK .前者只包含了大約7000多個漢字,很多生僻字和繁體字都沒有包含進來.而ZHS16GBK是前者的一個擴充套件,大約包含了2.1萬個漢字字元,基本上包括了所有的繁體字和生僻字.而這兩種字符集又是大多數儲存中文資料庫中選用的字符集。
常見字元問題介紹
? 下面介紹的問題都是由於這著這兩種字符集的相容性產生的。
? 情況一 資料庫字符集為ZHS16GBK,客戶端字符集為:ZHS16GBK.
這種情況下資料庫和客戶端的字符集完全一致,在插入和顯示簡,繁體字 符時都不會有問題。
? 情況二資料庫字符集為ZHS16GBK,客戶端字符集為ZHS16CGB231280
由於客戶端的字符集是資料庫字符集的子集,,查詢時有些繁體字會顯示為亂碼,原因是客戶端的字符集中沒有包含當前顯示字元,其他的繁體字oracle會根據客戶端的字符集將他們穿換成簡體字後顯示出來。此時客戶端能否插入繁體字成功取決於所插入的繁體字是否包含在資料庫的字符集當中.
情況三資料庫字符集為ZHS16CGB231280,客戶端為ZHS16CGB231280.
可以顯示繁體字.插入繁體字時如果插入的繁體字包含在資料庫的字符集中就可以正常插入,否則報ORA-01756: 括號內的字串沒有正確結束,原因是oracle由於自身字符集中沒有包括該繁體字,所以將他作為單位元組處理,導致語法解析時出錯。
? 情況四資料庫字符集為ZHS16CGB231280,客戶端為ZHS16GBK.
此時客戶端查詢時,很多的繁體字顯示為亂碼,簡體字可以正常顯示.可以插入 繁體字,但繁體字插入後,oracle會將它們全部轉換成簡體字.
? 結論
從以上幾種情況可以看出:
? 出現亂碼的原因是資料庫,客戶端的字符集不一致造成,只要修改客戶端字符集就可以解決.客戶端如果是linux系統,修改使用者的環境變數中字符集的型別。如果是windows,直接修改登錄檔中oracle_home下的NLS_LANG的值。
? 對於需要同時儲存簡體中文和繁體中文時,應首先選擇ZHS16GBK,而不是ZHS16CGB231280,因為前者包含的字元是後者的3倍多.當然,現在的UNICODE字符集也可以選擇,它可以儲存各種語言字元.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14766526/viewspace-591702/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- 淺析NewSQL資料庫——TiDBSQL資料庫TiDB
- 「Oracle」資料庫字符集編碼修改Oracle資料庫
- 資料庫的讀現象淺析資料庫
- 淺析列式資料庫的特點NR資料庫
- 淺析圖資料庫 Nebula Graph 資料匯入工具——Spark Writer資料庫Spark
- Oracle基本資料型別儲存格式淺析——RAW型別Oracle資料型別
- LLM大模型向量資料庫技術架構淺析大模型資料庫架構
- 淺析雲資料庫配置錯誤的危險性資料庫
- 資料安全運營淺析
- 淺析大資料框架 Hadoop大資料框架Hadoop
- 國產資料庫達夢資料庫(DM7)例項初始化引數淺析資料庫
- 淺析Beautiful Soup庫和Lxml庫XML
- 淺析Redis基礎資料結構Redis資料結構
- 「Oracle」Oracle 資料庫安裝Oracle資料庫
- Oracle資料庫配置Oracle資料庫
- 淺析vue的雙向資料繫結Vue
- 淺析證券行業資料庫基礎平臺創新實踐行業資料庫
- oracle資料庫與oracle例項Oracle資料庫
- 「Oracle」Oracle資料庫基本概念Oracle資料庫
- 「Oracle」Oracle 資料庫基本概念Oracle資料庫
- 淺談圖資料庫資料庫
- Oracle資料庫-----資料庫的基本概念Oracle資料庫
- oracle 備份資料庫,匯出資料庫Oracle資料庫
- 淺析大資料 學習大資料後能做什麼大資料
- 淺析oracle b-tree index搜尋原理OracleIndex
- Oracle 字符集修改Oracle
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- 4.2. Oracle資料庫Oracle資料庫
- Laravel 使用 Oracle 資料庫LaravelOracle資料庫
- oracle資料庫卡頓Oracle資料庫
- Oracle資料庫閃回Oracle資料庫
- oracle資料庫資料字典應用Oracle資料庫
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- MapReduce資料序列化讀寫概念淺析!
- 淺析HTTP資料接收不同步攻擊HTTP
- 淺析大資料研究常用的軟體工具大資料
- 如何在10g中修改資料庫字符集資料庫
- Oracle資料庫遷移至PolarDb(阿里雲資料庫)Oracle資料庫阿里