控制台输出中的UTF-8字符

时间:2015-09-01 05:18:08

标签: c utf-8 printf

我正在尝试使用printf语言String C进入Windows控制台。有什么方法可以将个字符打印到输出中吗?

3 个答案:

答案 0 :(得分:1)

如果您不介意使用WinAPI,请查看WriteConsoleW功能。它允许您将每个unicode字符打印到控制台。您可以使用L"character"MultiByteToWideChar获取字符的相应WCHAR表示。我建议第二个,因为它更便携,适用于运行时生成的字符串。

示例(来源必须以UTF-8保存):

#include <Windows.h>

int main()
{
    const char* multibyte = "↑↓";
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    WCHAR buffer[1024];
    DWORD count;
    DWORD written;
    count = MultiByteToWideChar(CP_UTF8, 0, multibyte, strlen(multibyte), buffer, 1024);
    WriteConsoleW(handle, buffer, count, &written, NULL);
    printf("\n");
    return 0;
}

答案 1 :(得分:0)

有两种可能性可以找到:

  1. 研究员方法:查找有关您正在使用的控制台的文档。查找有关其使用的字符集的文档,并找到一种方法来打印此字符集中存在的字符。

    1. 试用和错误:在下面的循环中将所有255个字符打印到控制台。
  2. for(i=1; i < 256; i++)
    {
        printf ("%d: %c\n", i, i);
    }
    

    这应该会在您的控制台屏幕上为您提供所需的所有信息。

答案 2 :(得分:-1)

为错误的答案道歉。 经过一点点搜索,我发现了这个在线

https://answers.yahoo.com/question/index?qid=20131226030802AAnvC7n

for( i=0;i<256;i++)printf("%d %c\n ", i, ((char) i) ); 

 printf("%c %c %c %c\n", 24,25,26,27); \\This gives those characters. 

但是你可以让我知道你正在使用哪个编译器,因为它不是在所有编译器中打印箭头。