需要将文件中的汉字内容读取到字符串中,在界面显示。建立工程时要求支持Unicode。
用CStdioFile::ReadString读取到CString,然后通过MFC对话框的DoDataExchange显示到Static控件。
文件可以用任何编码方式保存:用ANSI保存时,比如“啊”,GB码为B0A1,读取到内存后为B0 00 A1 00,显示为乱码;用UTF、UTF-8等格式保存,则读取到内存后都是不可理解的内容,更无法显示。跟踪可见,该CString对象是宽字符类型。怎么解决?
用CStdioFile::ReadString读取到CString,然后通过MFC对话框的DoDataExchange显示到Static控件。
文件可以用任何编码方式保存:用ANSI保存时,比如“啊”,GB码为B0A1,读取到内存后为B0 00 A1 00,显示为乱码;用UTF、UTF-8等格式保存,则读取到内存后都是不可理解的内容,更无法显示。跟踪可见,该CString对象是宽字符类型。怎么解决?
首先,要确定是以何种编码存储的,这个可以通过读取文件头来判断,当然,文件需要是正常存储的文件,否则,除非你明确知道文件是以何种编码存储的,然后,以二进制的形式读取,最后,将相应编码的字符转换成Unicode型
purple2727:我没说在DoDataEXchange中赋值
moonzero:“可以”不是“可能”,是我可以,即,用任意编码保存都成,只要能实现目的。请练习阅读理解。
change to CP_UTF8 for UTF-8.
-----------------
首先,你的工程是unicode,你要保存成ansi就要把要保存的内容转换成ansi才能保存,不是直接写进去就可以的参考下:http://www.cppblog.com/greatws/archive/2008/08/31/60546.html