如何在C++中打印these UTF-8 characters?如何打印UTF-8字符C++?
5
A
回答
0
那么,你知道这是可能的,因为你的浏览器可以呈现它们。在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;
3
只需输出适当的字节到您的终端,确保终端使用UTF-8编码来显示您的数据。 C++本身相对UTF8不可知。这只是一个uint_8的数组。
(除非你想使用某种面向字符的操作上使用UTF-8字符串。然后,你需要使用UTF-8的操控功能,而不是数组索引和普通的字符串处理例程。)
例如sprintf("%c%c%c\n", 0xE2, 0x99, 0xA0);
0
在C++: 的std :: wcout < < L “WSTR [” < < WSTR < < L ']' < <的std :: ENDL;
In C: printf(“%ls \ n \ n”,wstr);
+3
wchar_t不保证是UTF-16。这当然不会是UTF-8。 – jamesdlin 2010-01-23 06:52:47
相关问题
- 1. 使用C++将UTF8字符打印到Linux控制台
- 2. 如何在C(Linux utf8终端)中打印“方块抽屉”Unicode字符?
- 3. 如何打印字符串C++ MFC
- 4. C++如何向后打印字符串?
- 5. 如何打印非ASCII字符用C
- 6. 如何在c#中打印字符串到打印机?
- 7. c打印太多字符
- 8. C#打印字符串
- 9. 打印C++ unicode字符
- 10. 如何在C++中的字符数组中打印字符
- 11. 打印一个unicode拉丁字母(utf8)
- 12. 从字符串中删除不可打印的utf8字符(控制字除外)
- 13. 在ANSI C中打印字符C
- 14. UTF8字符在目标C
- 15. 在Drupals中没有打印出UTF8字符HTML
- 16. 使用'使用utf8;'给我 '在打印宽字符'
- 17. 在glib中打印utf8
- 18. 打印字符
- 19. 打印字符
- 20. 如何打印字体的字符集?
- 21. 字边界后如何打印字符
- 22. 如何打印字典字符串
- 23. 如何打印“|”符号在C++
- 24. C通用打印数组函数 - 打印字符串数组
- 25. 如何在另一个打印时打印字符串?
- 26. 如何用打印机打印字符串?
- 27. 斑马打印机:如何打印UTF-8特殊字符
- 28. 如何打印总是打印一列的字符
- 29. C打印一个字符串数组
- 30. C - wchar_t打印不需要的字符
取决于你用什么字体,无论是UNIX或Windows,无论你是写一个控制台或GUI API。 – 2010-01-23 05:29:34
最好是跨平台控制台 – y2k 2010-01-23 06:11:48
这些字符不是ASCII字符集的一部分,这意味着在打印它们之前必须选择一个包含它们的字体。没有跨平台的方式来选择控制台应用程序的字体。我认为你完全可以在Windows上做到这一点。 – 2010-01-23 08:34:28