BestAns

路漫漫其修远兮,吾将上下而求索

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. 执行,会看到中文完美输出。

添加评论