vb6处理外文字符显示乱码的问题!!!
数据库表中有很多数据,其中一个字符串是"Straße",其中包含一个德文的字母ß,我用SQL把数据获取到rs中后,用 tmp = rs.GetString(, , ",", , vbCrLf)得到一个长字符串,并用Open "C:\test.csv" For Output As #1
Print #1, tmp
写入到一个csv文件中,其他数据都正常,唯独这个德文字母显示乱码?
请问这个问题该怎样解决啊?
(我跟踪过,rs中数据都正常的,但是到tmp中就有乱码了,写入到csv中也显示乱码) 外文 乱码 unicode ansi 你看这个 csv 文件时,要用相应的字库。不要在 tmp 中看,除非你的系统环境也用德文字库。
系统之间传输的是编码,只有给人看的时候,才从字库中取出图画显示到屏幕上或打印到纸张上。 你看看乱码字符的编码是否 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 ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ SHY ® ¯
Bx ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿
Cx À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
Dx Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
Ex à á â ã ä å æ ç è é ê ë ì í î ï
Fx ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
你的问题与下面这个帖子的正好相反:
数据库中文字段是乱码,如何转码? 乱码的编码是3F啊~~ 你这是编码为U+00DF的unicode字符,当然不能使用ANSI编码的OPEN等语句来处理了。实在要用也是以Binary方式打开文件直接以字节数组方式写入吧 乱码的编码是3F啊~~
-----------------------------------------------------------------------
这是因为你在中文系统下使用 String 造成的。系统会将所有在中文字库下无法解析的字符都用 ? 代替。
你试试使用 Byte 数组来保存你的字符串。 你不要试图在中文系统下打开的 C:\test.csv 中查看到正确的字符显示。因为你用以打开它的软件没有编码选择,是用中文系统字库去解释 ASCII > 127 的字符的。
换句话说,即使你写对了,打开文件也看不到。
试试写到网页文件中,在浏览器中选择编码来查看。 对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
补充:VB , 基础类