¡Hola! nº  是西班牙文
¡Hola! nº 保存成.txt 编码为unicode ,测试以下代码 ,显示 还是不正确!    Dim textBytes() As Byte, headBytes(2) As Byte
    fn = App.Path & "\test.txt"
    If Dir(fn) = "" Then
        MsgBox "文件不存在,请先单击【写入】按钮生成“MyUnicode.txt”文件。", vbInformation
        Exit Sub
    End If
    Open fn For Binary As #1
        Get #1, , headBytes()  '读取文件头。
    Close #1
    If headBytes(0) = 255 And headBytes(1) = 254 Then '是Unicode编码。十六进制为:FF 、FE。
        Open fn For Binary As #1
            ReDim textBytes(LOF(1) - 2) '减去文件头占用的2个字节。
            Get #1, 3, textBytes()  '第三个字节起为文本内容。
        Close #1
        Text1.Text = textBytes()  '在 VB 中字符串是 UniCode 格式,所以Unicode码直接赋值即可显示文本内容。
        RichTextBox1.Text = textBytes()
    Else
        MsgBox "非Unicode编码,不予读入,请单击【写入】按钮。", vbInformation
    End If
    

解决方案 »

  1.   

    没记错的话,第三个字节应该索引是2吧
    Get #1, 3, textBytes()  '第三个字节起为文本内容。
      

  2.   

    显示为乱码,只能说明你的控件不支持显示Unicode字符!换成Microsoft Forms 2.0 Object Library的TextBox控件试试吧。
      

  3.   

    像这个字符,如果你直接粘到vb的Exe中就是乱码,那么你用任何方式去读取文件再显示到text中,他也必然是乱码的。我试了6、7种字体,也没发现不乱码。粘到vc的exe中,倒是完全正常。
      

  4.   


    纠正一下,后来验证了,3确实是第3个字节。
    你这非GBK字符,不能在VB6及其自带的ANSI版控件中正常显示就很正常了。估计你用的WINDOWS也是中文系统。觉得楼主应该会VB.NET吧,你以后以UNICODE为重要内容的程序,直接用VB.NET写就是了