首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C/C++读取中文文本,对字符集有深入研究的

2012-07-26 
C/C++读取中文文本,对字符集有深入研究的高手进不知怎么弄的,本人将一个中文文本的格式弄乱了,用系统自带

C/C++读取中文文本,对字符集有深入研究的高手进
不知怎么弄的,本人将一个中文文本的格式弄乱了,用系统自带的文本工具打开没问题,可在C++中读取时就成乱码了。
被我弄乱的文本文件可在此下载 textTest.rar

其中有两个文件index.txt 为混乱文件;index_good.txt为正常文件。其内容都为"一二三",可大小分别为16B,10B。文件都为UTF-8编码。

C++代码如下

C/C++ code
ifstream reader;//locale oldLocale=reader.imbue(locale(locale("chs"),"",LC_CTYPE));  //这里加入中文支持也不行reader.open("d:\\index.txt");char chs[300];reader.getline(chs,300);


用下面的MFC代码也不行
C/C++ code
    CStdioFile file;    file.Open("D:\\index.txt",CFile::modeRead);    CString str;    file.ReadString(str);


用C#代码是可以读取到中文的。

已尝试过使用宽字符集,但还是不行~~
本人再次尝试一个字节一个字节地比较两个文件,发现从第一个字节开始,这两个文件就不一样了

请问有无高手可以将这个文件中的中文用C/C++读取出来~~~


[解决办法]
下载了你上传的文件,看见其中一个文件是utf-8 另外一个是ansi的

你读ansi的文件 ,应该用char做缓冲区,

你读utf-8的 也可以用宽字读,然后再转换
[解决办法]
推荐使用WinHex软件查看文件或内存中的原始字节内容。

对电脑而言只有二进制字节;对人脑才有英文字母、数字、中文、以及中文编码如GB2312、GBK、Big5、Shift-JIS、Unicode、UTF8、……
[解决办法]
应该是文件编码问题。读取之后要先进行转码。

热点排行