【发布时间】:2019-05-10 16:36:04
【问题描述】:
此代码适用于 windows 以在控制台中启用 unicode 16(以便编写):它使用 io.h 工作
_setmode(_fileno(stdout), _O_U16TEXT);
在 linux 上,我尝试包含 sys/io.h 以使其工作,但它仍然给我错误:
_fileno 未在此范围内声明
_O_U16TEXT 未在此范围内声明
_setmode 未在此范围内声明
我在互联网上搜索过,我无法找到解决方案,也许你可以帮我解决这个问题!
您需要更多信息吗?
操作系统:Windows 10 和树莓派 2b 运行无 gui 的 rasbian
编译器:g++
谢谢
【问题讨论】:
-
现代 Linux 发行版已经原生 UTF-8。只需将 UTF-8 写入
std::cout即可。不需要任何特定于 MS-Windows 的愚蠢。 -
那么我该如何写这个unicode字符“0x2588”呢?谢谢
-
这将取决于每个单独的控制台如何配置其编码。您可以查看您正在使用的特定控制台的手册。
-
你相信
std::cout << "█" << std::endl;吗?如果您的 C++ 文本编辑器使用 UTF-8 编码,那么这就是她所写的全部内容。获取任何 Unicode 字符,获取它的 UTF-8 编码,然后使用它。 -
这是一种与
UTF-16/UTF-8stackoverflow.com/questions/52703630/… 相互转换的方法,尽管最好只使用wstring,它将在Windows 上编译为UTF-16/UFT-8,在@987654330 上编译为UTF-32/UTF-8@ . stackoverflow.com/questions/45565566/…