我需要在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的初始化代码,或者使用一个为您处理这一问题的框架。