oracle中有一個欄位addr的值為 2100 G?D?LL?, K?r?si Csoma
欄位型別為 NVARCHAR2 (30) 型別的
DUMP(addr,1016) 回傳值為 Typ=96 Len=6 CharacterSet=AL32UTF8: 74,24,6e,61,6d,63
vba使用adodb查詢該欄位
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
rs.Open "select addr from table", cn
將rs("addr")賦值給單元格,就顯示亂碼了:2100 G?D?LL?, K?r?si Csoma
但是我如果從toad里面直接復制粘貼到單元格里就能正常顯示,也就是說excel是支持這些字符的。
要怎樣處理才能讓vba賦值的單元格顯示正常呢?
uj5u.com熱心網友回復:
字體設定問題?字符編碼問題?
控制元件不支持Unicode問題?
對電腦而言沒有亂碼,只有二進制位元組;對人腦才有亂碼。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
uj5u.com熱心網友回復:
在德文系統的 Windows 下試試。uj5u.com熱心網友回復:
應該是字符集的問題,欄位oracle中是UTF8的(CharacterSet=AL32UTF8),可以有三個位元組的字符,但是資料到了VB這里默認只是支持unicode,VB6的字串變數也同樣不支持UTF8(98年還沒這個吧),所以,資料經過VB轉一手以后UTF8的資訊丟失了,再填到支持UTF8的應用里時其編碼就已經不對了。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/52806.html
標籤:VBA
