首页 > 解决方案 > 从 UTF-8 字节数组创建字符串?

问题描述

考虑表情符号。它是 U+1F619(十进制 128537)。我相信它的 UTF-8 字节数组是 240、159、152、151。

  1. 给定 UTF-8 字节数组,我该如何显示它?我是否std::string从字节数组创建一个?是否有 3rd 方库可以提供帮助?
  2. 给定一个不同的表情符号,我怎样才能得到它的 UTF-8 字节数组?

目标平台:Windows。编译器:Visual C++ 2019。只是粘贴到 Windows CMD 提示符下不起作用。我尝试chcp 65001将 Lucida 作为字体,但没有运气。

如有必要,我可以在 macOS 或 Linux 上执行此操作,但我更喜欢 Windows。

为了澄清......给定一个 400 字节的列表,假设 UTF-8,我如何显示相应的代码点?

标签: c++visual-c++

解决方案


C++ 有一个简单的解决方案。

#include <iostream>
#include <string>

int main(void) {
    std::string s = u8""; /* use std::u8string in c++20*/
    std::cout << s << std::endl;
    return 0;
}

这将允许您存储和打印任何 UTF-8 字符串。

请注意,Windows 命令提示符对这种东西很奇怪。最好使用 MSYS2 等替代方案。


推荐阅读