成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle 字符集中出現(xiàn)亂碼的解決

數(shù)據(jù)庫(kù) Oracle
Oracle 字符集亂碼在實(shí)際的應(yīng)用中是經(jīng)常出現(xiàn)的在實(shí)際的運(yùn)行中帶來很多的不便,以下的文章就是介紹Oracle 字符集亂碼的解決方案。

在早期的Oracle是沒有中文的字符集(如Oracle6、Oracle7、Oracle7.1),盡管如此數(shù)據(jù)庫(kù)在那時(shí)也有人運(yùn)用了, 并用US7ASCII字符集存儲(chǔ)了中文,或是有的用戶在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),不考慮清楚,隨意選擇一個(gè)默認(rèn)的字符集,如WE8ISO8859P1或US7ASCII,而這兩個(gè)字符集都沒有漢字編碼。

雖然有些時(shí)候選用這種字符集好象也能正常使用,但用這種字符集存儲(chǔ)漢字信息從原則上說就是錯(cuò)誤的,它會(huì)給數(shù)據(jù)庫(kù)的使用與維護(hù)帶來一系列的麻煩。

正常情況下,要將漢字存入數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)字符集必須支持中文,而將數(shù)據(jù)庫(kù)字符集設(shè)置為US7ASCII等單字節(jié)字符集是不合適的。US7ASCII字符集只定義了128個(gè)符號(hào),并不支持漢字。另外,如果在SQL*PLUS中能夠輸入中文,操作系統(tǒng)缺省應(yīng)該是支持中文的,但如果在NLS_LANG中的字符集設(shè)置為US7ASCII,顯然也是不正確的,它沒有反映客戶端的實(shí)際情況。

但在實(shí)際應(yīng)用中漢字顯示卻是正確的,這主要是因?yàn)镺racle檢查數(shù)據(jù)庫(kù)與客戶端的Oracle字符集設(shè)置是同樣的,那么數(shù)據(jù)在客戶與數(shù)據(jù)庫(kù)之間的存取過程中將不發(fā)生任何轉(zhuǎn)換,但是這實(shí)際上導(dǎo)致了數(shù)據(jù)庫(kù)標(biāo)識(shí)的字符集與實(shí)際存入的內(nèi)容是不相符的。

而在SELECT的過程中,Oracle同樣檢查發(fā)現(xiàn)數(shù)據(jù)庫(kù)與客戶端的字符集設(shè)置是相同的,所以它也將存入的內(nèi)容原封不動(dòng)地傳送到客戶端,而客戶端操作系統(tǒng)識(shí)別出這是漢字編碼所以能夠正確顯示。

在這個(gè)例子中,數(shù)據(jù)庫(kù)與客戶端都沒有設(shè)置成中文Oracle字符集,但卻能正常顯示中文,從應(yīng)用的角度看好象沒問題。然而這里面卻存在著極大的隱患,比如在應(yīng)用length或substr等字符串函數(shù)時(shí),就可能得到意外的結(jié)果。

對(duì)于早期使用US7ASCII字符集數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移到Oracle8i/9i中(使用zhs16gbk),由于原始數(shù)據(jù)已經(jīng)按照US7ASCII格式存儲(chǔ),對(duì)于這種情況,可以通過使用Oracle8i的導(dǎo)出工具,設(shè)置導(dǎo)出字符集為US7ASCII,導(dǎo)出后使用UltraEdit等工具打開dmp文件,修改第二、三字符,修改 0001 為0354,這樣就可以將US7ASCII字符集的數(shù)據(jù)正確導(dǎo)入到ZHS16GBK的數(shù)據(jù)庫(kù)中。

總結(jié)一下在 .Net 中讀寫Oracle數(shù)據(jù)庫(kù)常用兩種方式:OracleClient和OleDb,其中OleDb的方式根據(jù)驅(qū)動(dòng)程序的不同又有兩種。

1. OracleClient方式,是微軟專門針對(duì)Oracle數(shù)據(jù)庫(kù)開發(fā)的,僅在 .NET Framework 1.1 版中受支持。據(jù)說速度快、性能好,是推薦使用的方式。但根據(jù)我的經(jīng)驗(yàn),當(dāng)Oracle數(shù)據(jù)庫(kù)服務(wù)器端采用英文字符集比如 US7ASCII 時(shí),客戶端不管Oracle字符集如何設(shè)置,讀出的中文都是亂碼;若服務(wù)器端用中文字符集比如 ZHS16GBK ,則無亂碼問題。

引用類庫(kù):System.Data.OracleClient.dll。

命名空間:System.Data.OracleClient。

常用類:OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction、OracleDataReader等。

典型連接字符串:“data source=oratest;user id=scott;password=tiger”(注意:可不指定 provider 驅(qū)動(dòng))。

2. OleDb方式,微軟和Oracle公司各自提供了OleDb的驅(qū)動(dòng)程序,使用方法的差別很少。不管Oracle服務(wù)器端用何Oracle字符集,讀寫中文均無亂碼問題。

相同之處

命名空間:System.Data.OleDb。

常用類:OleDbConnection、OleDbCommand、OleDbDataAdapter、OleDbTransaction、OleDbDataReader等。

不同之處

引用類庫(kù):微軟的只需要System.Data.dll;若用Oracle的驅(qū)動(dòng),雖然也只要引入System.Data.dll,但前提是首先安裝Oracle針對(duì).Net的數(shù)據(jù)訪問組件。

連接字符串:與OracleClient方式相比,要添加一個(gè)provider,微軟為

  1. provider=MSDAORA.1;”,Oracle為“provider='OraOleDb.Oracle';
    ”set 
    conn=server.createobject("adodb.connection")  
  2. dns="Provider=OraOLEDB.Oracle.1;Persist Security Info=True;
    User ID=user1;Password=pass1;Data Source=oradb"
     

上述的相關(guān)內(nèi)容就是對(duì)Oracle 字符集亂碼解決的描述,希望會(huì)給你帶來一些幫助在此方面。

【編輯推薦】

  1. Oracle 字符串split的相關(guān)實(shí)際應(yīng)用代碼介紹
  2. Oracle創(chuàng)建Split 與Map 函數(shù)的代碼示例
  3. Oracle 權(quán)限入門如何管理
  4. Oracle 10G for linux常用命令淺析
  5. Oracle數(shù)據(jù)庫(kù)緩沖區(qū)命中率的概述
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2010-05-05 17:29:40

Oracle 8i

2010-05-04 09:34:18

Oracle em

2009-11-30 12:58:04

PHP字符集編碼

2010-03-30 14:53:42

Oracle 8i

2010-04-14 11:42:36

Oracle進(jìn)程

2010-05-04 15:59:05

Oracle字符集

2010-04-12 11:37:57

Oracle RAC

2010-04-22 09:08:30

Oracle 8i

2010-04-13 12:32:38

Oracle字符集

2010-06-04 15:57:03

PHP+MYSQL

2011-04-11 10:59:33

Oracle字符集

2010-05-04 10:51:53

Oracle數(shù)據(jù)庫(kù)

2010-05-06 10:01:25

Oracle數(shù)據(jù)庫(kù)

2011-04-01 15:09:08

MRTG亂碼

2011-04-11 11:05:12

Oracle字符集

2011-04-07 15:58:59

MySQL字符集亂碼

2010-04-21 16:07:16

Oracle 8i

2009-11-20 16:52:35

Oracle字符集

2011-05-20 13:24:39

oracle字符集

2010-04-30 10:16:22

Oracle字符集
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人在线免费观看av | 国产精品视频在线观看 | 欧美嘿咻 | 91福利影院| 国产农村妇女精品一区 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 国产区在线视频 | 911网站大全在线观看 | 欧美色综合 | 午夜网站视频 | 日韩精品无码一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 日本 欧美 三级 高清 视频 | 区一区二在线观看 | 久久国产精品久久国产精品 | 久久99精品久久久久子伦 | 中文一区二区 | 久久久网 | 日本色综合 | 涩爱av一区二区三区 | 一区二区三区视频在线免费观看 | 国产精品99久久久久久久vr | 一久久久 | 国产91久久精品一区二区 | 欧美日韩一区二区三区四区 | 日韩欧美国产综合 | 亚洲网在线 | 成人一级黄色毛片 | 亚洲欧美日韩在线 | 日韩一级 | 精品国产免费人成在线观看 | 日韩不卡视频在线观看 | 毛片入口| 久久黄网| 日韩精品免费一区二区在线观看 | 亚洲精品久久久蜜桃 | 久久久www成人免费无遮挡大片 | 日韩男人天堂 | 久久久久久国产 | 国产黄色在线观看 | 欧美色欧美亚洲另类七区 |