FF FE 是BSBOM标记(U+FEFF) 专用于描述Unicode文本的编码格式FF FE:表示是UTF-16LE编码 FE FF:表示是UTF-16BE编码 FF FE 00 00:表示是UTF-32LE编码 00 00 FE FF:表示是UTF-32BE编码 EF BB BF :表示是UTF-8编码 这是由于一般的txt文件是ANSI+DBCS编码的 而Unicode又有很多种编码格式 所以需要几个表示编码格式的字节来区分编码格式
对于UTF16LE:dim bbuf() as byte dim cbfile as long dim hf as integerhf = freefile() open [文件名] for binary as hf cbsize = lof(hf) if cbsize>2 then cbsize = cbsize - 2 redim bbuf(0 to cbsize-1) get hf, , bbuf end if close hftext1.text = bbuf '会自动转为String,String的数据就是byte()
ff fe是unicode文本的标志,
如果没有,一般的编辑器就认为这个文件是ansi文本文件
有,就应该seek两个字节,然后用unicode的方式读取,
否则,seek开始位置,然后用ansi的方式读取
专用于描述Unicode文本的编码格式FF FE:表示是UTF-16LE编码
FE FF:表示是UTF-16BE编码
FF FE 00 00:表示是UTF-32LE编码
00 00 FE FF:表示是UTF-32BE编码
EF BB BF :表示是UTF-8编码
这是由于一般的txt文件是ANSI+DBCS编码的
而Unicode又有很多种编码格式
所以需要几个表示编码格式的字节来区分编码格式
-------------------------------------------理论上可以达到4G个字符
实际上最大只可能是 (1G-4M)-1 个字符
(与BSTR的定义有关)
from MSDN,实际不晓得不太明白,请教zyl910
//理论上可以达到4G个字符
//实际上最大只可能是 (1G-4M)-1 个字符
//(与BSTR的定义有关)BSTR是Unicode,双字节的,应该是2G才对,不明白为什么实际少了那么多?
最低4MB是DOS兼容区
2GB-4MB是系统保留区
所以只有2GB-8MB的地址空间才能放数据再加上BSTR是UTF-16LE格式的字符串
每个字符2Byte(没使用代理对的时候,使用代理对就是4byte了)
所以还要除2最后-1是因为String最后又一个隐含的'\0'字符串结束符
否则,seek开始位置,然后用ansi的方式读取读取有区别吗,有代码没?
dim cbfile as long
dim hf as integerhf = freefile()
open [文件名] for binary as hf
cbsize = lof(hf)
if cbsize>2 then
cbsize = cbsize - 2
redim bbuf(0 to cbsize-1)
get hf, , bbuf
end if
close hftext1.text = bbuf '会自动转为String,String的数据就是byte()