Oracle 儲存生僻字

2021-08-25 05:28:35 字數 1423 閱讀 7433

就一般情況來說,oracle儲存中英文的字段用varchar2型別就可以了,但有些時候,遇到生僻字就不行了。

需求描述: 在預設字符集環境下,實現oracle儲存生僻字: 㛃、龑.....(使用nvarchar2欄位型別實現,以「㛃」為代表進行測試)

一般來說,在安裝oracle資料庫的時候,字符集設定選擇的是使用預設值,也就是 zhs16gbk

varchar2  跟nvarchar2 區別不大,但是在存放中文的時候,nvarchar2會比varchar2多一點。

顯而易見,這兩種型別都行不通了。然而,我們可以換一下插入方法

首先,把生僻字轉換為unicode。鏈結

"㛃" 轉為unicode為 "\u36c3"(注意: \u 是unicode的轉義字元,使用的時候要去掉)

然後,從dual中查詢結果:

可見,實質上,在nvarchar2才儲存了「㛃」字

最後,再一次進行插入資料:

nvarchar2型別的tname成功插入了生僻字「」。

至於有人說通過更改資料庫的字符集也可以實現,可以啊,但是這個代價和工作量過分點了吧?萬一出現什麼差池,後果太美不敢想象。除非在立項初期,考慮十分周到,囊括所有編碼的問題,但是,這個,也有點玄。

感謝一下:

Oracle生僻字亂碼

遇到了生僻的姓氏,存入資料庫中亂碼,下面是領導批示的解決方案 第一步 把存名字的那個欄位的型別改為nvarchar2 100 一定是n開頭的,不然也沒用 生僻字轉成unicode 如 ud840 udd64 資料庫中,sql視窗 select utl raw.cast to nvarchar2 d8...

mysql觸發器 生僻字 mysql 生僻字亂碼

發一下牢騷和主題無關 incorrect string value xf0 xa1 xbf xa8 xe9 x82.for column last name 這個問題出在mysql上,mysql如果設定編碼集為utf8那麼它最多默許只能支撐到3個位元組的utf 8編碼,而4個位元組的utf 8字元還...

SQL SERVER中生僻字問題儲存與查詢問題

以下僅記錄碰到的幾個問題 1.首先字段設定為varchar的時候儲存後無法進行正常的顯示 顯示為?此狀態下匹配查詢或者like模糊查詢都沒問題 2.將字段設定為nvarchar,在進行插入或者跟新時入 insert into teset set membername 秦龑 此時龑字仍然只顯示?ins...