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、……
[解决办法]
应该是文件编码问题。读取之后要先进行转码。