需要将文件中的汉字内容读取到字符串中,在界面显示。建立工程时要求支持Unicode。
用CStdioFile::ReadString读取到CString,然后通过MFC对话框的DoDataExchange显示到Static控件。
文件可以用任何编码方式保存:用ANSI保存时,比如“啊”,GB码为B0A1,读取到内存后为B0 00 A1 00,显示为乱码;用UTF、UTF-8等格式保存,则读取到内存后都是不可理解的内容,更无法显示。跟踪可见,该CString对象是宽字符类型。怎么解决?

解决方案 »

  1.   

    好像在DoDataEXchange中不能赋值吧,你换个函数中看看,用Static+=CString看看
      

  2.   

    "文件可以用任何编码方式保存"
    首先,要确定是以何种编码存储的,这个可以通过读取文件头来判断,当然,文件需要是正常存储的文件,否则,除非你明确知道文件是以何种编码存储的,然后,以二进制的形式读取,最后,将相应编码的字符转换成Unicode型
      

  3.   

    想用UNICODE的时候总最后被委屈到多字节上...在字符编码上总是有问题.
      

  4.   

    没有除了xianglitian,stock888的方法以外的,真正的解决方法吗?
    purple2727:我没说在DoDataEXchange中赋值
    moonzero:“可以”不是“可能”,是我可以,即,用任意编码保存都成,只要能实现目的。请练习阅读理解。
      

  5.   

    ANSI solution is http://hi.baidu.com/krispan/blog/item/834569034176df703812bbbd.html
    change to CP_UTF8 for UTF-8.
      

  6.   

    用ANSI保存时
    -----------------
    首先,你的工程是unicode,你要保存成ansi就要把要保存的内容转换成ansi才能保存,不是直接写进去就可以的参考下:http://www.cppblog.com/greatws/archive/2008/08/31/60546.html  
      

  7.   

    保存成标准unicode文档即可。//你保存的编码和读取的编码必须一致。