ascii码在vb里的存储类型是哪个??
解决方案 »
- Winsock控件可以做异步事件吗?
- 让文本框处于锁定状态,并使文本框不能获得焦点,要分别设计什么属性?
- 着急,HELP ME,解决给100分
- 从网站下载二进制文件,如何去掉文件附加的文件头,我已经实现了但感觉不好。有更好的方法吗? 请指教?
- 怎样以非独占方式打开数据库?
- 请高手帮忙:关于MSFlexGrid与Text控件配合的问题
- 这个DELPHI的函数多带一个返回变量ANSWER,请问VB如何实现这样的函数?
- 各位高手请帮帮我!!谢谢谢谢谢谢,关于注册表的
- 如何利用VBA在CAD中打开bmp图片??
- 注意:网络传输问题等待高手指点!
- Do While n 是不是等价于 Do While n >0 ??
- 还是颜色选择问题
MsgBox TypeName(Asc("a"))
End Sub
比如:
String1=Bytes1()
Bytes1()=String1
但只有Unicode编码才能正常显示字符。4、以Ascii码存储的字符串数组需要转换为Unicode编码。
如果:
Bytes1()为一个Ascii码字节数组。
则:
String1=StrConv(Bytes1(),vbUnicode)
或:
Bytes2()=StrConv(Bytes1(),vbUnicode)
这样可以得到一个UniCode编码的字符串。5、将Unicode编码转换为Ascii编码。
如果:
Bytes1()为一个Unicode编码字节数组或字符串。
则:
String2=StrConv(Bytes1(),vbFromUnicode)
或:
Bytes2()=StrConv(Bytes1(),vbFromUnicode)
这样可以得到一个Ascii编码的字符串。6、没有Ascii。
通常说的Ascii是IBM的字符集。
Windows支持的字符集叫做ANSI字符集,ANSI字符集在0-127的范围和Ascii兼容。
但是,在128-255的扩展编码和Ascii是不一样的。典型的例子是:你试图把DOS下用Ascii制表符画的表格文本显示到Windows下是不可能的。
如果只是英文和数字,那么这个区别对你没有影响。7、如果有中文。
VB下用UniCode表示中文;而你所谓的“Ascii编码”某些时候可能也表示“GB2312”(因为很多人不知道该如何表达这个概念,所以都叫它Ascii)。
中文编码有三种:
1、UniCode是国际通用的中文编码;
2、Big5是中国台湾省的编码;
3、GB2312/GBK是中国大陆的编码(GB2312不支持繁体、GBK支持繁体);
无论是中国大陆、中国台湾,同一汉字在VB下的UniCode编码是一样的。
在非UniCode编码的情况下(也就是“本地编码”情况下),UniCode经过代码页转换成Big5或是GB码。
文本文件通常以“本地编码”保存。
Big5和GB码有彼此互相不对应的内容。有些字符GB没有、有些字符Big5没有,因此转换会有盲区。8、如果你要100%显示Ascii字符。
编码显示为什么字符的根本因素取决于字库,你甚至可以用编码表示花纹(参见Wingdings字体)。
如果由于特殊原因,需要100%的显示出Ascii 128编码以上的扩展字符(比如早期设备上使用制表符画的表),那么你有两个办法:
(1)需要一个Ascii字库。
(2)转换为对应的全角字符(全角字符有全部的Ascii的内容)。这种转换可以用查表法来实现。
For x =0 To 3
i = x
Bytes(i) = 49 + x
Next这个时候,Bytes()是Ascii编码的字符串“1234”。但你想转换成VB下的String,需要这样。
String1 = Bytes()
Debug.print String1 '显示乱码,因为String1是Ascii编码,而不是UniCode编码。String2 = StrConv(Bytes(), vbUniCode)
Debug.print String2 '显示"1234"UniCode编码:Dim Bytes() As Bytes
For x =0 To 3
i = x * 2
Bytes(i) = 49 + x
NextString1 = Bytes()
Debug.print String1 '显示"1234"