MSDN文档对AscW的说明是:AscW是为使用Unicode字符的32位平台提供的。它返回Unicode(宽型)字符代码,因此可以避免从ANSI到Unicode的代码转换。

按照参考手册的定义,AscW函数应该返回一个字符的Unicode字符编码,但是直接拿返回的结果来用的话会有潜在的BUG,正如我碰到的。

“魔”字的Unicode编码是39764,测试如下代码

c = AscW("魔")
If c > 127 ThenWScript.Echo "Not ASCII"
ElseWScript.Echo "ASCII"
End If

你认为返回的结果是什么?"Not ASCII"?错!返回的结果是"ASCII"。

这就是潜在的BUG,对某些中文(当然还有其他字符)AscW函数返回的值是负数!如果你的代码拿这个值与一个正数比较大小,逻辑值将是False!

为什么呢?因为AscW的返回值的子类型是Integer,而VBS中Integer的取值范围是从-32768到32767。39764 > 32767,造成了溢出,所以返回负数。

怎样才能得到正确的结果呢?答案把子类型是转化成Long,Long的取值范围是-2,147,483,648到2,147,483,647,不会造成溢出。

WScript.Echo CLng("&H" & Hex(AscW("魔")))

先用Hex函数把AscW的返回值转化成十六进制的字符串,加上VBS中十六进制前缀&H,最后用CLng函数把子类型转化成Long。这样就能得到39764这个正确的Unicode编码值了。


本文转自hcy's workbench博客园博客,原文链接:http://www.cnblogs.com/alterhu/archive/2012/04/08/2438133.html,如需转载请自行联系原作者。

VBS字符编码的说明相关推荐

  1. java ascii 编码方式_JAVA 的ASCII字符编码一览表

    JAVA 的ASCII字符编码一览表 二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 0000 0000 0 00 NUL ␀ 空字符(Null) 0000 0001 1 01 SOH ...

  2. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  3. Qt字符编码,创建中文文件

    1.代码文件本身编码: 2.Qt中用于控制读入和写出文件系统时的字符编码由QTextCodec::setCodecForLocale()所决定.一般不用设置,Qt跟系统交互时会根据系统的Locale来 ...

  4. Java学习总结:45(字符编码)

    字符编码 在实际工作中最常见的4种编码如下: GBK.GB2312:中文的国标编码,其中GBK包含简体中文与繁体中文两种,而GB2312只包含简体中文: ISO8859-1:是国际编码,可以描述任何文 ...

  5. python 字符编码问题

    字符编码 一.字符编码的演进 ASCII GB2312    GBK1.0    GB18030 Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言.跨平台 ...

  6. 字符编码简介 ANSI Unicode Unicode big endian UTF-8

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和 1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte) ...

  7. Java工具类-转换字符编码

    package common; /***字符串处理公用类 */ public class DealString {/*** 转换字符编码 由"iso-8859-1"西文转换为简体中 ...

  8. java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

    原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)-–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...

  9. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

最新文章

  1. 程序猿的终点?!!!
  2. 怎么修改存储路径_Power Query数据位置变了?利用参数轻松解决源文件路径问题...
  3. kali 安装volatility_kali对Windows内存在线取证
  4. java ndk 在哪_NDK简介
  5. 网站常见漏洞-- XSS攻击
  6. 前端学习(3180):ant-design介绍3
  7. 安装Cocoapods,以及其中出现的问题
  8. 图解算法系列笔记(三)
  9. composer.install
  10. python常用的一些东西——sys、os等(转)
  11. 懒人工作源码分析(1)
  12. java浮点数的精确计算_Java 浮点数计算精度丢失问题?
  13. com.lowagie.text-2.1.7jar
  14. 单位元转换万元怎么转_excel教程:将单位为元的excel数值转换成单位为万元的数值...
  15. 看完《一九四二》的感受--也写给正在找工作时迷茫的你
  16. 如何用eclipse读取.txt文件
  17. Google到底有多强大
  18. git push origin HEAD
  19. 计算机百科丨芯片发展历经五次变革,下一个十年属于 AI
  20. unitTest单元测试

热门文章

  1. react16 渲染流程
  2. Linux反空闲设置的两种方法
  3. sklearn—无监督最近邻
  4. Linux命令中的Z原来是这个意思
  5. 在IIS上搭建WebSocket服务器(一)
  6. js事件触发器fireEvent和dispatchEvent
  7. AC日记——热浪 codevs 1557 (最短路模板题)
  8. GNU make manual 翻译(八十八)
  9. C# try与finally(WinForm、Asp.Net)
  10. 【转载】快速升职加薪的10个方法