"我"字在内存里表示为CE D2,也就是占用两个字节,用VBScript的函数asc("我")得到-12590也就是 CE D2 了但为什么我用 AscB(MidB("我",1,1)) 得到第一个字节的ANSI码时却为 17 而不是 CE
用 AscB(MidB("我",1,1)) 得到第二个字节的 ANSI 码时为 98 而不是 D2
为什么啊,急急急!!!!!!!!

解决方案 »

  1.   

    另外,先将"我"转成ANSI就行了? AscB(strconv("我",vbFromUnicode ))得到206也就是&H CE而
    ? AscB(MidB(strconv("我",vbFromUnicode ),2,1))得到210就是&H D2可能是AscB要求表达式一定是ANSI的才行吧,比MidB要求高至于,若用Unicode形式为什么得不到,偶也没想明白
      

  2.   

    这个问题真的很有意思!!!我发现所谓Unicode的编码方式并不是像楼主想象的那样,将"我"字用CE D2 方式放入内存的,不信你看看
    Asc("我")是-12590
    而AscW("我")则是25105而这个25105用二进制写开来就是0110 0010 0001 0001
    也就是十六进制的 98 和 17恰恰是楼主得到的值看来所谓Unicode编码,对东方字体而言,并不是简单的用两个值大于128的ANSI码拼起来表示那么简单未经转换的Unicode的编码的"我"字可能就是用98 17 形式放入内存的只不过我们总是以为它是两个ANSI码CED2拼成的
    不知道这样理解对不对
      

  3.   

    仔细看了一下MSDN果然看到这么一句话————"Unicode和DBCS都是双字符,但是他们的编码方案完全不同"