首页 > 解决方案 > 如何在 C 编程中显示 UNICODE 符号

问题描述

我需要有关在 C 程序中显示国际象棋符号的帮助,该怎么做?我正在使用 Code Blocks 程序编写 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 的初始化代码,或者使用一个框架来为你处理这个问题。


推荐阅读