我如何打印UTF-8字符C ++?

时间:2010-01-23 05:03:44

标签: c++ utf-8 character-encoding

我如何在C ++中打印these UTF-8 characters

3 个答案:

答案 0 :(得分:3)

只需将适当的字节输出到您的终端,然后确保终端使用UTF-8编码来显示您的数据。 C ++本身与UTF8无关。它只是一个uint_8的数组。

(除非你想对UTF-8的字符串使用某种面向字符的操作。然后你需要使用UTF-8操作函数,而不是数组索引和普通的字符串操作例程。)

e.g。 sprintf("%c%c%c\n", 0xE2, 0x99, 0xA0);

答案 1 :(得分:1)

嗯,你知道这是可能的,因为你的浏览器可以呈现它们。在Windows上,您可以使用charmap.exe小程序来发现它们的Unicode代码点:

  • ♠= 0x2660
  • ♣= 0x2663
  • ♥= 0x2665
  • ♦= 0x2666

挑战是获得一个C / C ++程序来显示它们。除非您使用像Qt或wxWidgets这样的跨平台UI库,否则在任何非平台特定方式下都不可能实现这一点。在Windows GUI程序中,您可以在WM_PAINT消息处理程序中执行此操作:

  case WM_PAINT: {
      hdc = BeginPaint(hWnd, &ps);
      HFONT hFont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, L"Arial Unicode MS");
      HGDIOBJ oldFont = SelectObject(hdc, hFont);
      RECT rc = {0, 0, 666, 16};
      DrawTextEx(hdc, L"\x2660\x2663\x2665\x2666", -1, &rc, DT_LEFT, 0);
      SelectObject(hdc, oldFont);
      DeleteObject(hFont);
      EndPaint(hWnd, &ps);
    }
    break;

答案 2 :(得分:0)

在C ++中:   std :: wcout<< L“wstr [”<< wstr<< L']'<<的std :: ENDL;

在C中:    的printf( “%1!\ n \ n” 个,WSTR);