Asc对于文件编码的影响 截取字符串长度


ContractedBlock.gif ExpandedBlockStart.gif Code
function get_lengthstr(str,length)
    
dim resultstr
 resultstr
=""
 t
=0
    
if len(str)<=length then
       resultstr
=str
    
else  
  strlen
=len(str)
  
  getlen
=cint(length)*2
  
For slen = 1 To strlen
   chrA 
= Mid(str, slen, 1)
   
If Asc(chrA) >= 0 And Asc(chrA) <= 255 Then
             t
=t+1
         
Else
             t
=t+2
         
End If
         
If t>=cint(getlen) Then
             resultstr
=left(str,slen)&""
             
Exit for
   
Else
    resultstr
=str
   
End If
   
'response.Write(t & "<br>")
  Next
    
end if
    get_lengthstr
=resultstr
end function
上面这个函数是我经常用来截取字符串长度用的,其中还区分了中英文。今天当我再次使用的时候发现截取的长度不对了,中文和英文没有区别了(原来设计的是2个英文相当于一个中文,为了保持长度大致相等)。
经过测试发现,其中asc对于中文得到的结果都是1,但原来我确实应用过,也是没错的。
查证了一些vb脚本的帮助才发现,原来是由于文件编码的问题引起的。asc在ANSI编码下面是对的,但在unicode编码下面就错了,我今天应用的正好是utf-8的编码,所以就不对了。只要把asc改成ascw就可以了。
下面是帮助文档的说明:
AscB 函数和包含字节数据的字符串一起使用。AscB 不是返回第一个字符的字符代码,而是返回首字节。AscW 是为使用 Unicode 字符的 32 位平台提供的。它返回 Unicode (宽型)字符代码,因此可以避免从 ANSI 到 Unicode 的代码转换。

转载于:https://www.cnblogs.com/7788/archive/2009/08/02/1536781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值