windows内部采用的是unicode编码,VB中同样的使用unicode编码
假设一个目录下面又一个文件叫做"编码.xls"
用VB的dir理论上应该能够得到unicode编码,但是实际上表示为问号的unicode编码。
这里不存在编码转换的问题,为何出现这样的现象,请各位指点。
代码如下:(f:\c32asm\下有编码.xls)
Dim b() As Byte
b = Dir("f:\c32asm\")
Open "f:\x.txt" For Binary Access Write As #1
Put #1, , b
Close #1

解决方案 »

  1.   

    就是说写到文件之后,表示为??.xls,本来应该表示为"编码.xls"的
    二进制表示为3F 00 3F 00 2E 00 78 00 6C 00 73 00(??.xls的unicode编码)
      

  2.   

    安装了
    在explorer中是正常显示的
    而且这不是显示的问题
    写到文件中的内码就不对
      

  3.   

    在:
    b = Dir("f:\c32asm\")
    之后,你测试输出数组一下,看看是否正确
      

  4.   

    dir返回的数组就不对
    用API的FindFirstFile也一样
    照说至少API返回的内码应该是正确的
    百思不得其解
      

  5.   

    //dir返回的数组就不对
    用API的FindFirstFile也一样这个是正常的,返回结果的编码肯定是当前操作系统的,所以你的工作就是进行编码转换,用下面的两个api:
    Private Declare Function MultiByteToWideChar Lib "kernel32.dll" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As LongPrivate Declare Function WideCharToMultiByte Lib "kernel32.dll" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
      

  6.   

    使用了VB的StrConv(src,vbUnicode)还是没用
    事实上b = Dir("f:\c32asm\")返回的就是unicode编码
    假如("f:\c32asm\")下存在的是“遍码.xls”而不是“编码.xls”
    那么字节数组b的前两个字节是144,77,对应的数值是904D,而这正是“遍”的unicode编码
    现在的问题是“码”返回的是00 3F,即问号对应的unicode编码
    如何使得“码”能返回正确的unicode编码呢
      

  7.   

    //假如("f:\c32asm\")下存在的是“遍码.xls”而不是“编码.xls”
    那么字节数组b的前两个字节是144,77,对应的数值是904D,而这正是“遍”的unicode编码
    现在的问题是“码”返回的是00 3F,即问号对应的unicode编码你能肯定这不是巧合吗?
      

  8.   

    因为日文不是UNICODE码的,是SHIFT-JIS码.自然看不到
      

  9.   

    TO:rainstormmaster(暴风雨 v2.0) 
    不是巧合
    遍的ShiftJis(日文编码)是95D5
    用附件里面编码表工具能够看出来TO:oho1937(压舟熊疯) 
    那么为什么在Explorer中能够看到呢
      

  10.   

    你大抵是弄错了,如果同为汉字,在不同操作系统中间那怕显示是同一个字,实际上内码都是不一样。打个比方给你:[佳]这个字会在繁体和简体下显示完全一样,但是一个是GB2312一个是big5,而日文则是Shift-JIS 你把根本的基本概念给弄错了IE看得一样是IE可以解析,同样的道理word也有这个功能的,但是VB没有。
    IE必须要安支持日文编码,否则一样无法解析。这和unicode扯不上联系。给你个参考:http://www.mailer.com.cn/article/articleview/1109/1/195/一般情况是按内码字库去分析编码解析,繁体的我做过,至于日文的那就不清楚了
      

  11.   

    我当然知道同一个字在不同的系统上,内码不一样
    但是不管VB有没有这个功能
    我要显示得到这几个汉字的内码
    肯定能够实现吧
    因为explorer里面是能够正确显示的
    这个肯定是前提
      

  12.   

    //因为explorer里面是能够正确显示的这个应该是调用ie的功能
      

  13.   

    //这个应该是调用ie的功能
    那么ie是如何显示的?