CLion + MinGW 使用 EasyX 输出中文乱码的解决方案
在 CLion 里面使用 EasyX 需要安装 easyx for mingw,目前支持 MBCS 和 Unicode 两种编码,分别来说。
一、MBCS 编码
一句话概述:用 GB18030 文件格式,代码用 char 定义字符串,链接 libeasyx.a 库文件,可以确保中文不乱码。
具体可以参考如下步骤:
1. 默认情况下,CLion 使用 MBCS 编码(就是使用 char 定义字符串)。
2. 敲以下代码:
#include<easyx.h>
#include<conio.h>
int main()
{
initgraph(640, 480);
char s[100] = "我命由我不由天";
outtextxy(50, 100, s);
_getch();
closegraph();
return 0;
}
3. 默认代码文件格式为 UTF-8,务必修改为 GB18030(或者 GBK)(注:GB18030 是 GBK 的超集)。
具体操作方法:打开代码,在 CLion 底部状态栏的右边,有一个“UTF-8”字样,表示当前代码文件的编码。单击“UTF-8”,在列表中选择“GB18030”,然后会有弹窗询问“重新加载或转换为 GB18030”,点“转换”,可以看到 CLion 底部状态栏的“UTF-8”已经改成了“GB18030”。
4. 修改 CMakeLists.txt,链接 EasyX 库文件(注:将 job01 替换为实际项目名):
target_link_libraries(job01 libeasyx.a)
5. 执行,会看到中文完美输出。
二、Unicode 编码
一句话概述:用 UTF-8 文件格式,代码用 wchar_t 定义字符串,链接 libeasyxw.a 库文件,可以确保中文不乱码。
具体可以参考如下步骤:
1. 默认情况下,CLion 使用 MBCS 编码。要改为 Unicode 编码(就是使用 wchar_t 定义字符串),需要修改 CMakeLists.txt,增加一行:
add_definitions(-DUNICODE -D_UNICODE)
2. 敲以下代码:
#include<easyx.h>
#include<conio.h>
int main()
{
initgraph(640, 480);
wchar_t s[100] = L"我命由我不由天";
outtextxy(50, 100, s);
_getch();
closegraph();
return 0;
}
3. 默认代码文件格式为 UTF-8,无需改动。如果 CLion 底部状态栏的右边没有显示“UTF-8”,务必修改为“UTF-8”(参考前面步骤)。
4. 修改 CMakeLists.txt,链接 EasyX 库文件(注:将 job01 替换为实际项目名):
target_link_libraries(job01 libeasyxw.a)
5. 执行,会看到中文完美输出。
添加评论
取消回复