當前位置:首頁 » 編程語言 » plsqlblob欄位亂碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

plsqlblob欄位亂碼

發布時間: 2022-08-27 07:45:44

A. 如題,oracleblob讀取為什麼部分亂碼

blob類型是存放二進制流的,不應該使用這種類型存放字元數據的,
應該使用clob類型存放大欄位字元數據,存放的二進制流可能是文件,
圖片或字元,如果存的是圖片,你讀取解碼成字元,肯定是要亂碼的.
希望能幫助你。

B. jsp/java讀取mysql的blob類型欄位中文亂碼問題 代碼如下,但是出來的是亂碼

知道了.
(2):手動插入中文數據,insert.....然後在mysql的窗口中查看是否正常顯示.
(3):根據測試結果確定是頁面問題還是資料庫設置問題
1:如果是頁面問題,相信你知道,怎麼解決.
2:如果是數據插入以後就變成了亂碼,那就是你的資料庫字元集有問題,找到my.ini
[client]
port=3306
[mysql]
加上:default-character-set=gbk
也可以通過資料庫設置向導來設置(windows下才有)
3:如果還是亂碼的話那就把頁面和資料庫的字元設置成一樣的就好了
希望對你有幫助
一般還是建議使用jbk
另外,虛機團上產品團購,超級便宜

C. java mysql資料庫 Blob亂碼 求救。

應該是
字元集
的問題。
最好都設成utf-8
包括資料庫,後台,還有前台頁面的編碼

D. pl/sql developer中文亂碼,為什麼呢怎麼解決Oracle問題

pl/sqldeveloper 中文欄位顯示亂碼:

原因:因為資料庫的編號格式和pl /sqldeveloper的編碼格式不統一造成的。

解決方法如下:

一、查看和修改oracle資料庫字元集:

select userenv('language') from al;

二、修改pl/sql developer 的編碼格式:

在windows中創建一個名為「NLS_LANG」的系統環境變數,設置其值為「SIMPLIFIED CHINESE_CHINA.ZHS16GBK」,然後重新啟動 pl/sql developer,這樣檢索出來的中文內容就不會是亂碼了。

如果想轉換為UTF8字元集,可以賦予「NLS_LANG」為 「AMERICAN_AMERICA.UTF8」,然後重新啟動 pl/sql developer。其它字元集設置同上。

(4)plsqlblob欄位亂碼擴展閱讀:

ORACLE資料庫常見問題及診斷方法 :

1,ORA-12571、ORA-03113、ORA-03114、ORA-01041

特徵:

客戶端(代理或應用伺服器)有時報這類斷連錯誤。

原因:

如果偶爾出現一次,則可能為網路原因或用戶異常中止,如果經常出現則為客戶端與服務端的字元集不一致。    

措施:

如果偶爾出現,可在服務端的協議配置文件PROTOCOL.ORA中增加一行TCP.NODELAY=YES。

如果經常出現,則為客戶端與服務端字元集不一致或網路原因。客戶端的字元集在注冊表裡定義:HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG。在客戶端注冊表中的TCP參數項中設置TCPMAXDATARETRANSMITIONS=20。

2,ORA-01000   

特徵:

達到會話允許的最大游標數。 

原因:

達到會話允許的最大游標數。   

措施:

在初始化文件INIT.ORA文件中增加OPEN_CURSORS的數量,一般要求大於200。


E. 如何解決oracle blob欄位 的亂碼問題

字元串以blob以byte[] 二進制的形式存成blob欄位
案例一:

oracle資料庫伺服器系統使用的是UTF-8編碼或者是AL32UTF8編碼
2.在Web應用中已經將請求編碼設置為UTF-8編碼
3二進制數據的取得

1
2
3
4
5
6
7
8
9
10
11

Blob blogObj = rst.getBlob("CONTENT");
if(blogObj!=null){
byte[] content = blogObj.getBytes(1, (int) blogObj.length());
try {
news.setContent(new String(content));
} catch (UnsupportedEncodingException e) {

e.printStackTrace();
}

}

亂碼問題的解決方法:
news.setContent(new String(content,「UTF-8」));

案例二:讀取blob,解決oracle中blob欄位下載後的亂碼問題
解決方法:注意不能按照像其他資料庫那樣的取法,而注意使用getBlob()這個oracle特有的方法。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (queryResult.next()) ...{
tfzn018KtfjxxPO.setTec_attachid(queryResult.getLong("TEC_ATTACHID"));
tfzn018KtfjxxPO.setTec_attachpostfix(queryResult.getString("TEC_ATTACHPOSTFIX"));
java.sql.Blob blob = queryResult.getBlob("TEC_ATTACHCONTENT");
InputStream is = blob.getBinaryStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 從輸入流讀到位元組數組
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) ...{
// 從位元組數組到輸出流
baos.write(buffer, 0, bytesRead);
}
byte[] bufferFile = baos.toByteArray();
tfzn018KtfjxxPO.setTec_attachcontent(bufferFile);
connection.commit();
}

總結如下:
1,導入導出的方法有問題,可能需要指定什麼參數。
2,資料庫版本不同,對blob的處理方法不一致所致。
3,jdbc連接問題。
通過注冊表修改
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0
NLS_LANG 改為你需要的字元集.

常用字元集(暫時只收集到兩個)
AMERICAN_AMERICA.WE8ISO8859P1
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
american_america.AL32UTF8

1--------- AMERICAN_AMERICA.zhs16gbk
2--------- AMERICAN_AMERICA.utf8
修改下注冊表即可。

F. plsql存儲過程亂碼

可能當時你創建存儲過程時,所使用客戶端的字元集不正確,而能正常顯示中文的客戶端字元集是正確的,你只要找到創建存儲過程的腳本,在正確字元集的客戶端上重新執行一下就行

G. plsql索性名稱亂碼的原因

查看一些資料庫伺服器和客戶端的額字元集有沒有不同的:
復制代碼
代碼如下:
select
*
from
nls_database_parameters;
select
*
from
nls_instance_parameters;
select
*
from
v$nls_parameters
t
where
t.PARAMETER
='NLS_LANGUAGE'
or
t.PARAMETER
='NLS_CHARACTERSET';
select
*
from
nls_session_parameters;
1.設置本地客戶端編碼:
進入
我的電腦,屬性,高級,環境變數,添加2項:
LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED
CHINESE_CHINA.ZHS16GBK"
2.更加直接的方法就是在plsql的安裝文件下創建一個txt文件
復制代碼
代碼如下:
set
nls_lang=simplified
chinese_china.ZHS16GBK
PLSQLDev.exe
然後重命名為bat可執行文件。將上面的nls_lang配置到plsql中去。

H. 為什麼blob欄位中明明是中文取出卻變亂碼

也許你存入時字元的編碼方式和你取出時是不同的 !

另,早期的資料庫在選擇字元集時建議採用預設值而不是採用「想當然的」中文字元集,如此可以正常處理中文。 現在是否還是這樣呢 !?

I. plsql嫖猚sv格式為什麼是亂碼

一、pl/sql developer 中文欄位顯示亂碼
原因:因為資料庫的編號格式和pl /sql developer的編碼格式不統一造成的。
二、查看和修改oracle資料庫字元集:
select userenv('language') from al;
查詢結果:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
--修改oracle資料庫字元集:(在SQL Plus中)
sql> conn / as sysdba;
sql> shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
sql> startup mount;
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
sql> alter system enable restricted session;
system altered.
sql> alter system set job_queue_processes=0;
system altered.
sql> alter system set aq_tm_processes=0;
system altered.
sql> alter database open;
database altered.
sql> alter database character set internal_use JA16SJIS;
sql> shutdown immediate;
sql> startup;

三、修改pl/sql developer 的編碼格式:
在windows中創 建一個名為「NLS_LANG」的系統環境變數,設置其值為「SIMPLIFIED CHINESE_CHINA.ZHS16GBK」,
然後重新啟動 pl/sql developer,這樣檢索出來的中文內容就不會是亂碼了。如果想轉換為UTF8字元集,可以賦予「NLS_LANG」為 「AMERICAN_AMERICA.UTF8」,然後重新啟動 pl/sql developer。其它字元集設置同上

J. 怎麼把plsql裡面的數據亂碼

開始-運行-輸入regedit-回車進入注冊表,依次單擊HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本的Oracle顯示的都不太一樣,但都會包含home這個單詞),找到「NLS_LANG」,查看數值數據是否為:「SIMPLIFIED CHINESE_CHINA.ZHS16GBK」,如果不是就將它設置為「SIMPLIFIED CHINESE_CHINA.ZHS16GBK。」