如何在C编程中显示UNICODE符号

  • 本文关键字:显示 UNICODE 符号 编程 c
  • 更新时间 :
  • 英文 :


我需要在C程序中显示国际象棋符号的帮助,如何做到?我正在使用代码块程序编写c代码并进行编译感谢提供的任何帮助

实现这一点的最可移植的方法是使用标准库中的宽字符输出函数。

#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#define WIDE_ORIENTED 1
int main(void)
{
setlocale( LC_ALL, "" );
fwide( stdout, WIDE_ORIENTED );
fputws( L"♖♘♗♕♔♗♘♖n", stdout );
return(EXIT_SUCCESS);
}

在Windows上,您可以将区域设置为".1200",以便在控制台中使用UTF-16le。由于Microsoft没有很好地遵循标准,您可能还需要调用_setmode(_fileno(stdout), _O_U16TEXT);

如果您想将Unicode字符串存储为UTF-8,大多数操作系统都允许您将其打印到控制台。在Linux上,这需要适当地设置区域设置。在Windows上,它更复杂。您希望将控制台置于UTF-8模式,其中包含:

#include <fcntl.h>
#include <io.h>
#include <windows.h>
#define CP_UTF8 65001
void init(void)
{
SetConsoleOutputCP(CP_UTF8);
_setmode(_fileno(stdout), _O_U8TEXT);
}

这仍然不允许区域设置函数(如isalpha()(使用UTF-8。您需要使用另一个库来处理UTF-8数据,例如ICU。

因此,一个输出UTF-8的跨平台程序应该使用#ifdef来检测它是否需要编译仅限Windows的初始化代码,或者使用一个为您处理这一问题的框架。