既然要让一个UTF-16格式文件正常显示,那就要先搞懂UTF文件的BOM头,自己编写转换程序。别人的程序,不能只拿来用了就完了,既然要用就彻底把它搞懂。还是先来看看UTF文件BOM头: BOM(Byte Order Mark)是一个字符,它表明UNICODE文本的UTF-16,UTF-32的编码字节顺序(高字节低字节顺序)和编码方式(UTF-8,UTF-16,UTF-32,其中UTF-8编码是字节顺序无关的)。 编码方式 文件头标志 UTF-8 EF BB BF UTF-16(Unicode Big Endian) FE FF UTF-16(Unicode Little Endian) FF FE UTF-32(Unicode Big Endian) 00 00 FE FF UTF-32(Unicode Little Endian) FF FE 00 00知道这些就好办了,你自己先读一下文件头,判断一下是哪一种编码,UTF-16有两种。然后参考下面我写的转换程序: Ansi,Unicode(little endian),Unicode big endian,UTF-8编码文件相互转换 http://blog.csdn.net/chenjl1031/archive/2010/12/07/6059767.aspx
Dim f as new FileInfo("wz.txt") Dim fs as FileStream = f.OpenRead() Dim bt(0 to fs.Length-1) as Byte fs.Read(bt, 0, CType(fs.Length,Integer)) fs.Close() IDC_NAME =System.Text.UnicodeEncoding.Unicode.GetString(bt, 0, 30).Trim()以上这段代码时VB.NET 写的。用这段代码就能正确转换。 现在我VB.NET 不太懂,所以想变成VB ,不知道怎么写?
BOM(Byte Order Mark)是一个字符,它表明UNICODE文本的UTF-16,UTF-32的编码字节顺序(高字节低字节顺序)和编码方式(UTF-8,UTF-16,UTF-32,其中UTF-8编码是字节顺序无关的)。 编码方式 文件头标志
UTF-8 EF BB BF
UTF-16(Unicode Big Endian) FE FF
UTF-16(Unicode Little Endian) FF FE
UTF-32(Unicode Big Endian) 00 00 FE FF
UTF-32(Unicode Little Endian) FF FE 00 00知道这些就好办了,你自己先读一下文件头,判断一下是哪一种编码,UTF-16有两种。然后参考下面我写的转换程序:
Ansi,Unicode(little endian),Unicode big endian,UTF-8编码文件相互转换
http://blog.csdn.net/chenjl1031/archive/2010/12/07/6059767.aspx
str=StrConv(bytearray,vbFromUnicode)
试试
Dim fs as FileStream = f.OpenRead()
Dim bt(0 to fs.Length-1) as Byte
fs.Read(bt, 0, CType(fs.Length,Integer))
fs.Close()
IDC_NAME =System.Text.UnicodeEncoding.Unicode.GetString(bt, 0, 30).Trim()以上这段代码时VB.NET 写的。用这段代码就能正确转换。
现在我VB.NET 不太懂,所以想变成VB ,不知道怎么写?