本文主要是介绍VS2008 用CFile对象读取Unicode文本。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
1新建一个记事本文件,输入字符串"0123456789"
文本编码格式是"ANSI" 我们用UltraEdit软件打开它,用十六进制模式显示(或者类似的可以显示16进制编码的软件)。
30 31 32 33 34 35 36 37 38 39
(4位二进制等于一个十六进制,0x30就是8位二进制数00110000,代表一个字节)
2 接着记事本"另存为"的时候可以选择4种编码格式“ANSI”,"Unicode","Unicode big endian ", "UTF-8",这里我们选择"Unicode",并把文件名改为"unicode.txt"
同样用UltraEdit软件打开它,用十六进制模式显示。
FF FE 30 00 31 00 32 00 33 00 34 00 35 00 36 00 37 00 38 00 39 00
为了让计算机认得Unicode编码的文本,我们发现Unicode格式比ANSI格式多加了2个字节的编码 FF FE ,
字符0的ASCII编码是 0x30 (十进制为96),在Unicode里用了2个字节来表示它0x0030。
CFile默认的是二进制的读写模式,如果不清楚什么是“二进制模式”
fopen("1.txt", "b")这个就是“二进制”读写模式。
CFile它不会去管你里面放的是什么,它就按字节数读到你的buffer里面。
Unicode文本就总共11*2 = 22个字节(10个数字编码,1个头编码FFFE)
我用的编译器是VS2008,Unicode环境。
TCHAR在多字节环境里为char,在Unicode里wchar(宽字符 2个字节).
为了符合C风格字符串,字符串最后放2个字节0x00 0x00
读者可以试试
TStream定位11个宽字符,或者10个宽字符,看看效果如何。
CFile file(fileDlg.GetPathName(), CFile::modeRead);TCHAR TStream[12] = {0};file.Read(TStream, 11*sizeof(TCHAR));MessageBox(TStream);
这篇关于VS2008 用CFile对象读取Unicode文本。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!