文本文件格式浅析以及转换

来源:互联网 发布:手机上能装修淘宝店铺 编辑:程序博客网 时间:2024/06/12 19:41
Windows7 文本文件目前支持4种编码格式:utf-8,unicode,unicode big endian,ansi
这些格式的定义,自行百度,来看一下他们具体的不同。先创建一个文本文件,默认是ansi格式,然后另存为其他三种格式。往里面随便写点数据
使用ue打开这些文件,使用ue的16进制功能,看到txt文件拥有如下属性:
ansi:没有任何特性
unicode:FF FE
unicode big Endian:FE FF
utf-8:EF BB BF
更深入一点说:假如每个txt文件文件里面输入的内容是一个字符“a”。看到的应该是这个样子:
ansi:61
unicode:FF FE 61 00
unicode big Endian:FE FF 00 61
utf-8:EF BB BF 61
从以上特性可以看出,ANSI并没有文件头(有些博客说有,其实是没有的),然后unicode 和unicode big endian 在编码上
是高低位置换的,最后utf-8,文件头固定,但是文件内容要从三个字节后开始。

程序读取用户文件,需要根据不同的编码格式使用不同的容器否则将导致读取出来的结果不是希望看到的。比如ansi你可以直接读取到char数组中,但是unicode类就应该读取到wchar_t类数组中。

以下内容是干货物。
如何从unicode文件中读取内容并转换为ansi格式:
CStdioFile ifs;ifs.Open(strFilePath,CFile::modeRead|CFile::typeBinary);DWORD length = ifs.GetLength();if (length<=2){    AfxMessageBox("文件没有正确数据!");    return 0;}char *content ;wchar_t *wcontent = new wchar_t[length+1];memset(wcontent,0,length+1);ifs.Read(wcontent,length);content = new char[length+1];memset(content,0,length);WideCharToMultiByte( CP_ACP, 0, wcontent, -1,content, length, NULL, FALSE );delete wcontent;
余下的转换待续!

0 0
原创粉丝点击