对于一个中文txt文本,C++中是两个字节存一个汉字,而对英文文本,则是一个字节存放一个字符,读取文件时,程序如何知道存储的是中文还是英文?他不会把一个汉字当成两个英文读取?谢谢!!
解决方案 »
- 全屏后怎样显示按钮
- VC程序正常编译运行 单独打开exe文件内存不能为read
- VS2008连接MSSQL Server2008的问题
- installshield的问题
- CListCtrl控件的反射消息WM_CTLCOLOR不起作用,为什么?(急,在线等)
- 求DirectX编程书籍
- http://expert.csdn.net/Expert/topic/2001/2001035.xml?temp=.8502008
- 一个有关CListView的奇怪问题
- WINDOWS MULTIMEDIA CONTROL 如何使其能播放第一个光驱的cd音乐盘?
- 能否用大大的图片做光标?
- (急救) dll中使用CAsyncSocket,在FreeLibrary时,CAsyncSocket的Close出错???
- VC2003和Visual Studio.Net 2003 是一样的么
char cbuf[10]
fp->Read(cbuf, 3);
就是读入3个字节的内容,如果但是文件指针指向字串是"a中文",则读入内容就是"a中";
上面条件不变,你运行
fp->Read(cbuf, 4);
得到内容就是"a中?",?表示乱码。在2000、XP下不用特意保存为UniCode,文本文件中的中中文也不会显示为乱码。
读取文件时,读的是字节码,当转换成字符串时,程序则按一定的字符集(通常是ANSI)
将字节码解码为字符串, 当编码和解码的字符集不一致的时候就会产生乱码识别中文英文是解码器的工作,不用我们操心, 只有当编码和解码的字符集不一致,
我们才要处理