英文和数字字段都可以正常读取,只有中文字段或中英文混合字段不行,有乱码。怎么办?
20 个解决方案
#1
是在哪里看到乱码?试试,先不要用 String 类型,将数据放到 Byte 数组中,看编码有没有问题。
然后试试:
strData = StrConv(bytData, vbUnicode)
然后试试:
strData = StrConv(bytData, vbUnicode)
#2
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
#3
+10086
#4
我测试了一下,例如,数据库中name字段内容“陈幼净”,读入byte数组中是
从查询分析器中看到的是“³ÂÓ×¾»”
strconv函数转不过来,请指教
#5
#6
你“存入”记录的代码是如何写的?
在那儿,会不会有“编码转换”造成的一些格式不兼容呢?
在那儿,会不会有“编码转换”造成的一些格式不兼容呢?
#7
这里关键要看你读的时候,是否需要把这个字段作为某些查询的条件,比如where [name]='嗷嗷叫的老马'这样的.
如果不需要,仅仅是作为数据存储的话,那就可以存的时候直接用BASE64编码一下....
如果不需要,仅仅是作为数据存储的话,那就可以存的时候直接用BASE64编码一下....
#8
我现在需要通过id读取病人姓名,怎么转码?
#9
ISO/IEC 8859-1 编码表如下
"陈幼净"编码 = B3 C2 D3 D7 BE BB,当然显示 "³ÂÓ×¾»"。
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 ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
"陈幼净"编码 = B3 C2 D3 D7 BE BB,当然显示 "³ÂÓ×¾»"。
#10
应该是你的控件字符集的问题。
#11
打开方式可以用 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A来选择。
#12
程序中调用iconv解码或者用MultiBytetoWideChar,WideChartoMultiByte来转码
#13
编码没有问题。在 ISO/IEC 8859-1 下显示 "³ÂÓ×¾»",说明其编码就是 B3 C2 D3 D7 BE BB。即汉字"陈幼净"的编码。
问题出在如何解释编码,也就是如何根据编码调用字库信息来显示文字图形。
问题出在如何解释编码,也就是如何根据编码调用字库信息来显示文字图形。
#14
打个比方,我们早先一个名牌产品叫“马戏扑克”,大小王是小丑,上海出产的。盒子上印的是 MAXIPUKE,汉语拼音。
出口到美国却无人问津,因为美国人看到的是 Maxi Puke,最大呕吐。
出口到美国却无人问津,因为美国人看到的是 Maxi Puke,最大呕吐。
#15
B3 C2 D3 D7 BE BB,用中文简体字库,显示出来就是 "陈幼净",无非是宋体、楷体之类的区别。
这个编码,用 ISO/IEC 8859-1 字库显示,就是 "³ÂÓ×¾»"。
这个编码,用 ISO/IEC 8859-1 字库显示,就是 "³ÂÓ×¾»"。
#16
那要是他换成RichTextBox应该就能显示了?
#17
要分析用户的实际需求,为什么既要采用汉字,又要使用 ISO/IEC 8859-1 字库?
实际上在 TextBox 的属性中,就有 Font 可以选择字库。但有一个问题,如果选择了中文字库,那西文中对应于 A0 - FF 的编码就不能显示。老外也会认为“出了乱码”。因为大多数控制只能设置一种字体。
具体怎样做,要看同一个字段中是否需要兼容中文和编码大于 128 的西文。如果不需要,可以将用来显示不同字段的控件选不同的字体库。如果需要,就麻烦一些,需要通过分析 Unicode 识别出东西方文字,再像老马所说,利用 RichTextBox 的 SelectionFont 属性动态设置字体。
#18
str=new String(obj.getBytes("ISO-9958-1"),"GBK");
#19
哈哈,大家说得都差不多了,我顺便问下,楼主你这是哪种数据库。不同数据库的处理方式稍有区别,原理相通。
#20
大家说的对,就是变态的客户信息科的人,安装数据库时,选的这个字符集,他们又懒得改,就麻烦我们这些做开发的人。
#21
#1
是在哪里看到乱码?试试,先不要用 String 类型,将数据放到 Byte 数组中,看编码有没有问题。
然后试试:
strData = StrConv(bytData, vbUnicode)
然后试试:
strData = StrConv(bytData, vbUnicode)
#2
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
#3
+10086
#4
我测试了一下,例如,数据库中name字段内容“陈幼净”,读入byte数组中是
从查询分析器中看到的是“³ÂÓ×¾»”
strconv函数转不过来,请指教
#5
#6
你“存入”记录的代码是如何写的?
在那儿,会不会有“编码转换”造成的一些格式不兼容呢?
在那儿,会不会有“编码转换”造成的一些格式不兼容呢?
#7
这里关键要看你读的时候,是否需要把这个字段作为某些查询的条件,比如where [name]='嗷嗷叫的老马'这样的.
如果不需要,仅仅是作为数据存储的话,那就可以存的时候直接用BASE64编码一下....
如果不需要,仅仅是作为数据存储的话,那就可以存的时候直接用BASE64编码一下....
#8
我现在需要通过id读取病人姓名,怎么转码?
#9
ISO/IEC 8859-1 编码表如下
"陈幼净"编码 = B3 C2 D3 D7 BE BB,当然显示 "³ÂÓ×¾»"。
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 ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
"陈幼净"编码 = B3 C2 D3 D7 BE BB,当然显示 "³ÂÓ×¾»"。
#10
应该是你的控件字符集的问题。
#11
打开方式可以用 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A来选择。
#12
程序中调用iconv解码或者用MultiBytetoWideChar,WideChartoMultiByte来转码
#13
编码没有问题。在 ISO/IEC 8859-1 下显示 "³ÂÓ×¾»",说明其编码就是 B3 C2 D3 D7 BE BB。即汉字"陈幼净"的编码。
问题出在如何解释编码,也就是如何根据编码调用字库信息来显示文字图形。
问题出在如何解释编码,也就是如何根据编码调用字库信息来显示文字图形。
#14
打个比方,我们早先一个名牌产品叫“马戏扑克”,大小王是小丑,上海出产的。盒子上印的是 MAXIPUKE,汉语拼音。
出口到美国却无人问津,因为美国人看到的是 Maxi Puke,最大呕吐。
出口到美国却无人问津,因为美国人看到的是 Maxi Puke,最大呕吐。
#15
B3 C2 D3 D7 BE BB,用中文简体字库,显示出来就是 "陈幼净",无非是宋体、楷体之类的区别。
这个编码,用 ISO/IEC 8859-1 字库显示,就是 "³ÂÓ×¾»"。
这个编码,用 ISO/IEC 8859-1 字库显示,就是 "³ÂÓ×¾»"。
#16
那要是他换成RichTextBox应该就能显示了?
#17
要分析用户的实际需求,为什么既要采用汉字,又要使用 ISO/IEC 8859-1 字库?
实际上在 TextBox 的属性中,就有 Font 可以选择字库。但有一个问题,如果选择了中文字库,那西文中对应于 A0 - FF 的编码就不能显示。老外也会认为“出了乱码”。因为大多数控制只能设置一种字体。
具体怎样做,要看同一个字段中是否需要兼容中文和编码大于 128 的西文。如果不需要,可以将用来显示不同字段的控件选不同的字体库。如果需要,就麻烦一些,需要通过分析 Unicode 识别出东西方文字,再像老马所说,利用 RichTextBox 的 SelectionFont 属性动态设置字体。
#18
str=new String(obj.getBytes("ISO-9958-1"),"GBK");
#19
哈哈,大家说得都差不多了,我顺便问下,楼主你这是哪种数据库。不同数据库的处理方式稍有区别,原理相通。
#20
大家说的对,就是变态的客户信息科的人,安装数据库时,选的这个字符集,他们又懒得改,就麻烦我们这些做开发的人。