日期:2014-05-19  浏览次数:21133 次

C#和C++读写文件的区别(和utf-8有关)
C#的入门经典利说,在C#里面,如果要将字符数组写到文件里面,要转换为utf-8编码的字节流,然后再写到文件里,读出来则要将字节流解码成unicode,才能正确显示。那么在c#里用FileStream   将字符串A写到文件log.txt里,那么用C++该怎么才能正确的读出log.txt里面的内容呢?  
补充一下:我如果直接打开notepad,然后输入汉字保存,接着用c++打开,读进来的都是2个字节(应该是unicode吧),所以都能正常显示。我用c#将汉字写到log.txt,在用C++读进来,就是3个字节,那么当我遇到一个txt文件时,该怎么正常读取呢?还请高手指点一下


------解决方案--------------------
notepad默认保存是ANSI的.
不同编码的文本,是根据文本的前两个字节来定义其编码格式的
ANSI:        无格式定义;
Unicode:       前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF; 
UTF-8:        前两字节为EFBB;
http://www.devedu.com/develop/2005-4-7/5995/default.aspx
------解决方案--------------------
有没有前半部分是ANSI,後半部分是Unicode呢?
------解决方案--------------------
有啊,自己写不就是可以了