sqlplus亂碼原因分析

2021-08-27 06:33:59 字數 819 閱讀 8645

如果客戶端設定的字符集nls_lang和伺服器端的字符集設定nls_characterset不一致的話,資料在客戶端和伺服器端進行流動時會有乙個轉換

客戶端字符集<->unicode<->伺服器端字符集

字符集一致的時候不會發生轉換。

而sqlplus上顯示的資料要求os的支援。

那麼就可以知道產生亂碼應該有以下幾種

1.資料沒有正確儲存

當客戶端字符集設定和伺服器端字符集設定不一致的時候,客戶端錄入的字元無法正確轉換為伺服器端所支援的字元,也就是說錄入字元屬於客戶端的字符集,但是不屬於伺服器端的字符集。這種情況下,字元是沒有正確存入資料庫,全部轉換為預設字元「?」

解決方法:

a.伺服器這種不支援的字元,不允許錄入

b.客戶端和資料庫端的字符集都設定為支援錄入字元的字符集

c.統一客戶端和資料庫端的字符集

d.使用unicode儲存字元

2.資料沒能正確讀取

和1一樣,如果伺服器端原有的字元,無法正確轉換為客戶端字元,那麼也會亂碼

解決方法同1

3.資料的轉換沒有任何問題,而客戶端無法支援

解決方法:

--------------

伺服器端的字符集設定(一旦設定,一般不可更改)

select * from nls_database_parameters;

使用以下sql可查尋本次鏈結設定

select * from v$nls_parameters;

出現亂碼現象的原因分析

首先我們知道知道utf 8編碼俗稱 萬國碼 我們能接觸到的編碼utf 8都囊括在內,所以我們也常用這一編碼集,出現亂碼情況也可以從這入手。1.資料庫建立的時候我們一般會設定編碼,通常也有預設形式。出現亂碼我們可以檢查是否為utf 8,通過控制台等檢視表中是否出現亂碼,出現了就可能需要檢查修改資料庫的...

Java亂碼原因

1 頁面編碼與後台類編碼不一致。2 後台類與資料庫互動保持資料時產生亂碼。解決方法 可以在驅動的url引數中指定。3 讀檔案 流時產生亂碼。解決方法 建議使用filereader和filewriter的父類 inputstreamreader outputstreamwriter,它們在建構函式中可...

SQL Plus無法正常啟動的原因

1 如果是11g資料庫,sql plus登入的時候,可能爆出下面的錯誤。sqlplus as sysdba sqlplus error while loading shared librearies home ora11g product 11.2.0 dbhome 1 lib libclntsh....