【问题标题】:Enabing Unicode16 on linux在 Linux 上启用 Unicode 16
【发布时间】: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-8 stackoverflow.com/questions/52703630/… 相互转换的方法,尽管最好只使用wstring,它将在Windows 上编译为UTF-16/UFT-8,在@987654330 上编译为UTF-32/UTF-8 @ . stackoverflow.com/questions/45565566/…

标签: c++ linux unicode


【解决方案1】:

你会相信 std::cout

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2012-10-03
    • 2011-10-16
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多