old men goes young:VB字符处理
早期的Visual Basic采用单字节处理机制,即一个英文字符用一个字节进行编码,中文字符则采用两个字节进行编码。这样,一个英文字符的存储要占用一个字节的空间,而一个中文字符则要占用两个字节,即ANSI方式。
4 0版以后,Visual Basic采用了一种新的字符处理方式,即所谓的大字符编码方案。这种方案把英文字符和中文字符作为一个整体进行统一编码,每个字符均用两个字符进行编码,通常把这种处理方案称为“UniCode方式”(统一编码方式)。在这种机制下,一个英文字符或一个汉字都看作是一个字符,所占用的存储空间均为两个字节。
为了实现ANSI与UniCode之间的转换,Visual Basic提供了一个名为StrConv的转换函数,格式如下:
其中“待转换字符串”可以是字符串常量,也可以是字符串变量。“转换格式”用来指定转换成哪种格式的字符串,可以取多种值,与ANSI和UniCode转换有关的值有两个,分别是:
例如:求字符长度
print len('VB程序设计')
print lenb('VB程序设计')
print len(strconv('VB程序设计',vbfromunicode))
print lenb(strconv('VB程序设计',vbfromunicode))
解释
unicode方式下:
len函数中,1个英文字符和1个汉字均占1个字节,所以结果为6.
lenb函数中,1个英文字符和1个汉字均占2个字节,所以结果为12.(采用大字符)
ansi方式下:
len函数中,1个英文字符占半个字节,1个汉字占1个字节,所以结果为5.
lenb函数中,1个英文字符占1个字节,1个汉字占2个字节,所以结果为10.