c++ - 如何使用 C++ 将 UTF-16 转换为 UTF-8?

标签 c++ string utf-8 utf-16 wstring

  • 我已经知道“codecvt”、“WideCharToMultiByte”和其他人。

我使用韩语。例如。 '안녕하세요'。

它的消息可以插入普通的字符串类。对吧?

但就我而言。如果我有文件::'test.txt' {in::'안녕하세요'}

并读取“test.txt”和 getline(),

(test.txt file read)
string temp;
getline(file pointer, temp);
cout<<temp;

现在我使用 cout。哒哒!消息已损坏!

我知道这是 WideCharacter 问题。所以我尝试了 MultiByteToWideChar 方法。

好的。它运行良好。

但我不想要这个。

最后我想读取宽字 rune 件,并保存 'string' 变量。

所以,我为你提问。

如何在“不更改消息”时将 UTF-16(宽字符/wstring)转换为 UTF-8(多字节/字符串)?

::我想要这种风格

wstring temp = "안녕하세요"

string temp2 = convert_to_string(temp);

->

string temp2 = "안녕하세요"

最佳答案

评论中提到,可以看到Convert C++ std::string to UTF-16-LE encoded string有关如何进行转换的代码。

但是如果您假设您有 wstring 来保存您的韩文字符串,您就避免了区分 UTF-16-LE 和 UTF-16-BE 的麻烦,并且您可以很容易地找到 Unicode 代码点字符串中的每个韩文字符。所以你的问题归结为找到任何代码点的 UTF-8 表示。这并不难,请参阅 https://www.rfc-editor.org/rfc/rfc3629 的第 3 页(还有维基百科 https://en.wikipedia.org/wiki/UTF-8 )。

示例代码在 Convert Unicode code points to UTF-8 and UTF-32

关于c++ - 如何使用 C++ 将 UTF-16 转换为 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781925/

相关文章:

c++ - 免费的 DirectShow 直播流源过滤器

c++ - 如何将音频数据放入 AVFrame 进行编码

java - Java 9 中紧凑字符串和压缩字符串的区别

.net - 需要让电脑和手机通话

ios - 如何用字符串数组中的 %20 填充空字符串 ios

c - strcpy() 有什么问题? (分段故障)

c++ - 使用 UTF-8 时带有奇怪字符的 SFML 标题栏

java - 大写重音字符显示为 “?”

PHP:将 unicode 代码点转换为 UTF-8

c++ - 为什么我的输入文件中的数字不进入我的数组 C++?