Oracle 生僻字亂碼解決方案

chenoracle發表於2018-04-03

Oracle 生僻字亂碼解決方案

 

Oracle 生僻字亂碼解決方案”(此+夕)【 su ǒ】字亂碼,無法正常顯示(變成問號);

生僻字“ Oracle 生僻字亂碼解決方案”(此 + 夕) (suo) ZHS16GBK 字符集下預設無法正常顯示;

測試將生僻字型別由 varchar2 改成 nvarchar2 ,同時使用 utl_raw.cast_to_nvarchar2 函式可以在資料庫里正常顯示;

Oracle 生僻字亂碼解決方案

select * from t1;

Oracle 生僻字亂碼解決方案

Oracle 生僻字亂碼解決方案

Oracle 生僻字亂碼解決方案

資料庫字符集如下:

select * from nls_database_parameters;

Oracle 生僻字亂碼解決方案

T1 表結構如下:

Oracle 生僻字亂碼解決方案

A 欄位為 VARCHAR2 型別


---將生僻字生成對應的unicode編碼

Oracle 生僻字亂碼解決方案

select utl_raw.cast_to_varchar2('3C54') from dual;

Oracle 生僻字亂碼解決方案

select utl_raw.cast_to_nvarchar2('3C54') from dual;

Oracle 生僻字亂碼解決方案

--- 測試 varchar2 型別無法正常儲存生僻字 Oracle 生僻字亂碼解決方案

truncate table t1;

alter table t1 modify (a nvarchar2(100));

insert into t1 values('? ' ,1);

select * from t1;

Oracle 生僻字亂碼解決方案

update t1

   set a =

       (select utl_raw.cast_to_nvarchar2('3C54') from dual)

 where b = 1;

select * from t1;

Oracle 生僻字亂碼解決方案

 

--- 測試 nvarchar2 型別可以正常儲存生僻字 Oracle 生僻字亂碼解決方案

truncate table t1;

alter table t1 modify (a nvarchar2(100));

insert into t1 values('? ' ,1);

select * from t1;

Oracle 生僻字亂碼解決方案

update t1

   set a =

       (select utl_raw.cast_to_nvarchar2('3C54') from dual)

 where b = 1;

 

select * from t1;

Oracle 生僻字亂碼解決方案

  歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

Oracle 生僻字亂碼解決方案

Oracle 生僻字亂碼解決方案



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2152540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章