比如我想把"c:/1.txt"更改为"c:/zapatillas nike español.txt"
在VB中试了好几种方法都不行,比如说用Name函数,用MoveFile或CopyFile都不行!
但是我直接手动用鼠标复制加粘贴很简单就实现了

解决方案 »

  1.   

    意思是这样的:现在在C盘的根目录下有一个文件 1.txt ,我想用vb6将这个文件名更改为 zapatillas nike español.txt
      

  2.   

    要用 Unicode 版本
    Declare Function MoveFileW Lib "kernel32.dll" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long) As LongSub RenameFile(ByVal sOldName As String, ByVal sNewName As String)
        MoveFileW StrPtr(sOldName), StrPtr(sNewName)
    End Sub
      

  3.   


    Tiger_Zhao的思路是对的,不过我也试过了,结果改完文件名后还是有乱码我首先将一个utf8的文件以二进制打开并按行分隔后赋予到DATA字符串数组中
    Open App.path & "Nfilename.txt" For Binary As #1
    ReDim DATA(LOF(1) - 1)
    ReDim tempData(LOF(1) - 1)
    Get #1, , tempData()
    Close #1
    DATA = Split(StrConv(tempData, 64), vbCrLf)然后:
    MoveFileW StrPtr(sOldName1), StrPtr(DATA(0))
    MoveFileW StrPtr(sOldName2), StrPtr(DATA(1))
     
    结果还是有乱码
      

  4.   

    StrConv() 只能用当前语言进行 Ansi-Unicode 转换,不能处理 UTF-8 编码。http://topic.csdn.net/u/20090925/20/11a38dbe-b3be-4323-9635-147e91356379.html
      

  5.   

    StrConv() 只能用当前语言进行 Ansi-Unicode 转换,不能处理 UTF-8 编码,不过挺奇怪的是如果我将DATA(0),DATA(1)这些字符串的内容写到文本文件中去的时候,可以看到生成的文件格式是UTF-8的,没有出问题另外我这种情况,怎么才能把正确的unicode字符串读进来并按照回车换行符分隔开呢?
    Open App.path & "Nfilename.txt" For Binary As #1
    ReDim DATA(LOF(1) - 1)
    ReDim tempData(LOF(1) - 1)
    Get #1, , tempData()
    Close #1'DATA = Split(StrConv(tempData, 64), vbCrLf) '不能这样处理,那应该怎么呢?
      

  6.   

    多谢了 最终通过UTF8_Decode函数解决了 不过Tiger_Zhao的ado方法也是可以的 多谢了,另外也谢谢大家的热心回答。