在VB中如何返回字符的Unicode编码值,包括中文字符。
为什么我用AscW()函数取中文的Unicode值有些为正数,有些却为负数呢?
正常,因为AscW返回的Integer型,本来就是2字节的,分正负的啊,你也可
Hex$(AscW())这样以十六进制格式查看的
Unicode vs Ansi
Visual Basic 32-bit 版本的字串处理采用 Unicode,也就是说字串在 VB 内部是以
Unicode 的格式来存放。
何谓 Unicode?简单的说,就是每一个字元都是以 2-byte 的型式表示,而每个「实
体字元」就是一个「字元」。因此,
Len("大家好")
Len("abc")
所传回的值都是 3,因为「大」和「a」都是一个字元。
但是这对一些中文字串处理,例如纯文字的资料档,却是一个大灾难,因为你必须以
byte 来定位每个字元,可是 Unicode 却把一切的处理全搞砸了。例如:
Len("Good Morning") 传回 12,而
Len("今天天气很好") 传回 6
对初学者而言,好不容易能使用 VB 来写程式已经是件了不起的事了,却马上在中文
处理上挨了一记闷棍,所受到的打击实在不小。但是不要怕,事实上只要再多了解一
些指令,就可以把中文处理的问题解决了。
是什麽指令呢?最重要的莫过於 StrConv 了。StrConv 函式的语法为:
StrConv(待转换字串, 转换格式)
其中转换格式在这里用到的是:
vbUnicode 将 Ansi 字串转换为 Unicode
vbfromUnicode 将 Unicode 字串转换为 Ansi
将字串转成 Ansi 之後,所有的字串处理指令都要加个 B,例如:LeftB, RightB,
MidB, ChrB, InstrB, LenB, InputB 等。例用这些指令来处理就行了。