对于一个中文txt文本,C++中是两个字节存一个汉字,而对英文文本,则是一个字节存放一个字符,读取文件时,程序如何知道存储的是中文还是英文?他不会把一个汉字当成两个英文读取?谢谢!!

解决方案 »

  1.   

    是不是应该采取Unicode模式读取呀,不然中文字符会不会是乱码呢
      

  2.   

    没关系,你可以按照ASCII方式保存为文本文件。(英文一个字符,中文两个字符)而CFile类读取文件的时按照字节读入,没有汉字的和英文的区别,只是按照你指定的字节数读入而已。
    char cbuf[10]
    fp->Read(cbuf, 3);
    就是读入3个字节的内容,如果但是文件指针指向字串是"a中文",则读入内容就是"a中";
    上面条件不变,你运行
    fp->Read(cbuf, 4);
    得到内容就是"a中?",?表示乱码。在2000、XP下不用特意保存为UniCode,文本文件中的中中文也不会显示为乱码。
      

  3.   

    保存字符串时程序会按一定的字符集(通常是ANSI)将字符串编码为字节码保存到文件
    读取文件时,读的是字节码,当转换成字符串时,程序则按一定的字符集(通常是ANSI)
    将字节码解码为字符串, 当编码和解码的字符集不一致的时候就会产生乱码识别中文英文是解码器的工作,不用我们操心, 只有当编码和解码的字符集不一致,
    我们才要处理