我有一个uint32_t
元素数组,每个元素都存储一个非拉丁Unicode字符的代码点。如何在控制台上打印它们或将它们以UTF-8编码字符存储在文件中?我知道它们可能无法在控制台上正确呈现,但是如果我在兼容的编辑器中将其打开,它们应该可以正常显示。
我尝试使用wprintf(L"%lc", UINT32_T_VARIABLE)
和fwprintf(FILE_STREAM, L"%lc", UINT32_T_VARIABLE)
,但无济于事。
最佳答案
您必须首先使用以下选项选择正确的语言环境:
#include <locale.h>
setlocale(LC_ALL, "C.UTF-8");
或者
setlocale(LC_ALL, "en_US.UTF-8");
然后使用
printf
格式的fprintf
或%lc
:printf("%lc", UINT32_T_VARIABLE);
这仅适用于足够小以适合
wchar_t
的Unicode代码点。对于更完整和可移植的解决方案,您可以自己实现将Unicode转换为UTF-8的操作,这并不是很困难。关于c - 如何在C语言中将Unicode代码点打印为字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38491380/