vb 读取unicode 乱码

rgbcn 2014-09-13 11:01:04
¡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
...全文
476 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ss1780064119 2014-12-20
  • 打赏
  • 举报
回复
你把语言库换掉试试。
bcrun 2014-09-13
  • 打赏
  • 举报
回复
引用 1 楼 bcrun 的回复:
没记错的话,第三个字节应该索引是2吧 Get #1, 3, textBytes() '第三个字节起为文本内容。
纠正一下,后来验证了,3确实是第3个字节。 你这非GBK字符,不能在VB6及其自带的ANSI版控件中正常显示就很正常了。估计你用的WINDOWS也是中文系统。觉得楼主应该会VB.NET吧,你以后以UNICODE为重要内容的程序,直接用VB.NET写就是了
用户 昵称 2014-09-13
  • 打赏
  • 举报
回复
像这个字符,如果你直接粘到vb的Exe中就是乱码,那么你用任何方式去读取文件再显示到text中,他也必然是乱码的。 我试了6、7种字体,也没发现不乱码。 粘到vc的exe中,倒是完全正常。
用户 昵称 2014-09-13
  • 打赏
  • 举报
回复
测试了你的西班牙文,乱码,可能是控件太老了,不支持新的字符,有些字体也是不能正确显示的。 比如欧元字符,有些老程序是显示不了的。
用户 昵称 2014-09-13
  • 打赏
  • 举报
回复
经测试这段代码在我的机器上完全正确。
Carlven2012 2014-09-13
  • 打赏
  • 举报
回复
显示为乱码,只能说明你的控件不支持显示Unicode字符!换成Microsoft Forms 2.0 Object Library的TextBox控件试试吧。
bcrun 2014-09-13
  • 打赏
  • 举报
回复
没记错的话,第三个字节应该索引是2吧 Get #1, 3, textBytes() '第三个字节起为文本内容。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧