資料庫表中有很多資料,其中一個字串是"Stra?e",其中包含一個德文的字母?,我用SQL把資料獲取到rs中后,用 tmp = rs.GetString(, , ",", , vbCrLf)得到一個長字串,并用
Open "C:\test.csv" For Output As #1
Print #1, tmp
寫入到一個csv檔案中,其他資料都正常,唯獨這個德文字母顯示亂碼?
請問這個問題該怎樣解決啊?
(我跟蹤過,rs中資料都正常的,但是到tmp中就有亂碼了,寫入到csv中也顯示亂碼)
uj5u.com熱心網友回復:
你看這個 csv 檔案時,要用相應的字庫。不要在 tmp 中看,除非你的系統環境也用德文字庫。系統之間傳輸的是編碼,只有給人看的時候,才從字庫中取出圖畫顯示到螢屏上或列印到紙張上。
uj5u.com熱心網友回復:
你看看亂碼字符的編碼是否 DF?Debug.Print Hex(Asc(Mid(tmp, 5, 1)))
似乎應該使用歐洲文字字符集 Latin1_General_BIN(即 ISO-8859):
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x
1x
2x SP ! " # $ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ \ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~
8x
9x
Ax NBSP ? ¢ £ ¤ ¥ | § ¨ ? a ? ? SHY ? ˉ
Bx ° ± 2 3 ′ μ ? · ? 1 o ? ? ? ? ?
Cx à á ? ? ? ? ? ? è é ê ? ì í ? ?
Dx D ? ò ó ? ? ? × ? ù ú ? ü Y T ?
Ex à á a ? ? ? ? ? è é ê ? ì í ? ?
Fx e ? ò ó ? ? ? ÷ ? ù ú ? ü y t ?
你的問題與下面這個帖子的正好相反:
資料庫中文欄位是亂碼,如何轉碼?
uj5u.com熱心網友回復:
亂碼的編碼是3F啊~~uj5u.com熱心網友回復:
你這是編碼為U+00DF的unicode字符,當然不能使用ANSI編碼的OPEN等陳述句來處理了。實在要用也是以Binary方式打開檔案直接以位元組陣列方式寫入吧uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
亂碼的編碼是3F啊~~-----------------------------------------------------------------------
這是因為你在中文系統下使用 String 造成的。系統會將所有在中文字庫下無法決議的字符都用 ? 代替。
你試試使用 Byte 陣列來保存你的字串。
uj5u.com熱心網友回復:
你不要試圖在中文系統下打開的 C:\test.csv 中查看到正確的字符顯示。因為你用以打開它的軟體沒有編碼選擇,是用中文系統字庫去解釋 ASCII > 127 的字符的。換句話說,即使你寫對了,打開檔案也看不到。
試試寫到網頁檔案中,在瀏覽器中選擇編碼來查看。
uj5u.com熱心網友回復:
對電腦而言沒有亂碼,只有二進制位元組;對人腦才有亂碼。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/132448.html
標籤:VB基礎類
上一篇:如何自動替換WORD里面的圖片
