[求助]UTF8字符字节长度的计算 本帖最后由 vbbaris 于 2012-03-21 12:55:35 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以使用LenB啊Len 函数 返回 Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。语法Len(string | varname)Len 函数的语法有下面这些部分:部分 说明 string 任何有效的字符串表达式。如果 string 包含 Null,会返回 Null。 Varname 任何有效的变量名称。如果 varname 包含 Null,会返回 Null。如果 varname 是 Variant,Len 会视其为 String 并且总是返回其包含的字符数。 说明两个可能的参数必须有其一(而且只能有其一)。如为用户定义类型,Len 会返回其写至文件的大小。注意 LenB 函数作用于字符串中的字节数据,如同在双字节字符集(DBCS)语言中一样。所以 LenB 返回的是用于代表字符串的字节数,而不是返回字符串中字符的数量。如为用户自定义类型,LenB 返回在内存中的大小,包括元素之间的衬垫。对于使用 LenB的示例代码,请参阅示例主题中的第二个示例。注意 当在用户自定义数据类型中使用变长字符串时,Len 可能不能确定实际存储所需的字节数目。 由于VB在内存中把任何字符用两个字节存储,不管什么格式的文件,直接用LenB获取的字节数均为2。因此我就没有用LenB(因为这UTF8文件中也有3字节的字符)。现在我放弃循环读取每个字符的方法,试着用了字符串转换语句 LenB(StrConv(Str,&H80)),正确算出来了Line Input读取的整个一行内容的字节数。这个语句只能对UTF8和Ansi格式文件有效,Unicode格式文件算出来的又是错误。问题总算是个解决了,不过Unicode格式文件的错误不太懂,或许Line Input不支持Unicode读取?? 一个datagrid 的问题 为什么保存的VB工程文件全变成最后一次保存的了? 我是辞不辞职那 DDE的linkpoke问题 太菜的问题啦!在一个窗口能不能定义两个枚举类型啊?还有…… 关于WinSocket 新手,对话框的问题 图像处理控件 VB和API高手请进,如何改变textbox里的指定部分字体和颜色 VB中引用ADODC部分功能有问题 vs2005工程转换为vs2008工程的问题 如何实现在网页中加载一个ActiveX控件,并实现点击网页中的按钮时,打开控件中的FOEM1,然后将FORM1的值赋给网页中的元素?
Len 函数
返回 Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。语法Len(string | varname)Len 函数的语法有下面这些部分:部分 说明
string 任何有效的字符串表达式。如果 string 包含 Null,会返回 Null。
Varname 任何有效的变量名称。如果 varname 包含 Null,会返回 Null。如果 varname 是 Variant,Len 会视其为 String 并且总是返回其包含的字符数。
说明两个可能的参数必须有其一(而且只能有其一)。如为用户定义类型,Len 会返回其写至文件的大小。注意 LenB 函数作用于字符串中的字节数据,如同在双字节字符集(DBCS)语言中一样。所以 LenB 返回的是用于代表字符串的字节数,而不是返回字符串中字符的数量。如为用户自定义类型,LenB 返回在内存中的大小,包括元素之间的衬垫。对于使用 LenB的示例代码,请参阅示例主题中的第二个示例。注意 当在用户自定义数据类型中使用变长字符串时,Len 可能不能确定实际存储所需的字节数目。
现在我放弃循环读取每个字符的方法,试着用了字符串转换语句 LenB(StrConv(Str,&H80)),正确算出来了Line Input读取的整个一行内容的字节数。这个语句只能对UTF8和Ansi格式文件有效,Unicode格式文件算出来的又是错误。问题总算是个解决了,不过Unicode格式文件的错误不太懂,或许Line Input不支持Unicode读取??