当前位置:数据分析 > vs2010读取中文_MFC用CStdioFile类读取中文文本时乱码问题的一种解决方法

vs2010读取中文_MFC用CStdioFile类读取中文文本时乱码问题的一种解决方法

  • 发布:2023-09-25 04:07

新手使用VS2010+QT5编程,最常见的问题就是中文乱码。然而QT5不同于QT4,网上QT4上解决中文乱码的方法是不适用于QT5的。下面介绍一种常用的解决中文乱码的方法:

首先,把源码文件全部转换成utf-8编码。(VS2010中的转换方法:打开任一.cpp/.h文件,文件》高级保存选项》如下所示)

在#include下面添加如下代码:

#if _MSC_VER >= 1600 //1600代表VS2010

#pragma execution_character_set("utf-8")

#endif

重新编译即可解决问题。

?????? ?在文章开始之前,先声明一下,本人的编程环境为vs2010,MFC工程使用unicode字符集。

?????? ?在MFC中,用CStdioFile类可以很方便地一行一行读取文件。 可是最近我在编写MFC程序时,用CStdioFile读取中文文本时,发现读入的是乱码。在网上查了很多方法都得不到很好的解决。后来本人冷静下来仔细分析了一下,找到了一种可行的方法。下面是我的这种方法的基本思路:

?????????????????????????????????????????????????????????????????????????????????????????

????????????????????????????????????????????????????读入??????????????????????????MultiByteToWideChar()??

中文文本(ascii编码方式)? --------------> char ch[ ]???----------------------------------> wchar_t wch[ ]

?

?

?????? ?首先,为了读入中文文本,我从CFile类派生了自己的类CMyFile,并在CMyFile类中添加并实现了每次读取一行的GetLine()函数。

?????? ?然后,用GetLine函数每次从文件中读取一行,存入字符数组char ch[ ]中。

?????? ?到目前为止,数组ch[ ]中的字符是ascii编码方式,为了将其转换为unicode编码方式,需调用API函数MultiByteToWideChar()。

??????? 在这里,具体的代码我就不详细写了,自己研究一下应该很容易写出的。

?

在使用vs2010的过程中出现了如下错误:

在网上看了什么“vs2010??工具-》选项-》文本编辑器-》选中??自动检测不带签名的UTF-8编码" ?还是不管用。

后来想了个办法,把报错的cpp和h文件用txt打开,选”文件“->”另存为“,另存的时候把”编码“选择”Unicode“。

我反正是没问题了,如果你们这样还是不行也不用问我,因为我也不知道还能怎样解决,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,祝各位好运。

相关文章

最新资讯