当前位置:编程学习 > VB >>

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 ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ 

你的问题与下面这个帖子的正好相反:
数据库中文字段是乱码,如何转码?
引用 2 楼 of123 的回复:
你看看乱码字符的编码是否 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 ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,