如何用C语言打印“∩”?

时间:2019-11-30 13:52:27

标签: c utf-8 character-encoding special-characters

我想用C打印交点符号(∩),但是ASCII table上不存在。问题是我尝试的所有内容都会生成一些奇怪的废话输出,例如Ôê®。

起初,我尝试将其放在printf函数上:

#include <stdio.h>
int main(void)
{
    printf("∩");
    return 0;
}

此操作不起作用后,我在互联网上搜索了charachter编码并找到了here,所以我决定尝试一下:

#include <stdio.h>
int main(void)
{
    printf("\xE2\x88\xA9");
    return 0;
}

它仍然不起作用。经过更多研究后,我认为更改语言环境将对我有所帮助,我尝试这样做:

#include <locale.h>
#include <stdio.h>
int main(void)
{
    setlocale(LC_ALL, "UTF-8");
    printf("\xE2\x88\xA9");
    return 0;
}

我也尝试过:

#include <locale.h>
#include <stdio.h>
int main(void)
{
    setlocale(LC_ALL, "");
    printf("\xE2\x88\xA9");
    return 0;
}

然后我尝试了这个:

#include <locale.h>
#include <stdio.h>
int main(void)
{
    setlocale(LC_ALL, NULL);
    printf("\xE2\x88\xA9");
    return 0;
}

然后我在互联网上找到了一些页面(不幸的是,我忘记了它的位置并且无法再次找到它),该页面告诉我使用名为wprintf的函数,我这样做了:

#include <locale.h>
#include <wchar.h>
#include <stdio.h>
int main(void)
{
    setlocale(LC_ALL, "UTF-8");
    wprintf(L"\xE2\x88\xA9");
    return 0;
}

所有先前的代码将产生相同的输出:

Ôê®

如果有人可以帮助我打印“∩”字符,我将不胜感激。

编辑:根据建议,我尝试使用windows.h中的函数将代码页设置为所需的代码,但它仍然仅在代码编辑器上有效:

#include <stdlib.h>
#include <locale.h>
#include <wchar.h>
#include <stdio.h>
#include <windows.h>

#if defined(_WIN32) 
    #define W 1
#else 
    #define W 0
#endif

int main(void)
{
    setlocale(LC_ALL, "UTF-8");

    if (W) // If the OS is windows
    {
        SetConsoleOutputCP(CP_UTF8);
        wprintf(L"\xE2\x88\xA9\n");
        SetConsoleOutputCP(850); // Set it back to normal to print other stuff later
    }

    return 0;
}

就像我说的那样,我的评论中所述的问题仍然存在,它可以在代码编辑器上运行,但是无论何时我在winows命令提示符下运行它时,都不会如此。

0 个答案:

没有答案