gpt4 book ai didi

c++ - Windows:UTF-16BE 到 UTF-8

转载 作者:可可西里 更新时间:2023-11-01 10:34:29 32 4
gpt4 key购买 nike

谁能告诉我强制 Windows 处理 big endian UTF-16 所需的 secret 无证黑魔法咒语?

只需简单调用 WideCharToMultiByte() 即可将 UTF-16LE 转换为 UTF-8。但是我如何使它适用于 UTF-16BE?我搜索了又搜索又搜索,但找不到任何关于此的信息。 (我不可能是地球上第一个需要这样做的人......)

显然,大端数字不是 Intel 平台原生的,但 Windows 肯定有一个 API 来处理这个问题。

最佳答案

Obviously big endian numbers are not native to the Intel platform, but surely Windows must have an API for dealing with this somewhere.

没有。它只支持 UTF-16LE。要处理 UTF-16BE,您必须首先通过交换每个 UTF-16 代码单元的字节来转换为 UTF-16LE。

您应该考虑使用专用的 Unicode 库,例如 ICONVICU .两者都支持 UTF-8、UTF-16LE 和 UTF-16BE。

如果您使用的是 C++11,您也可以使用其内置的 std::codecvt_utf8_utf16用于在 UTF-8 和 UTF-16 LE/BE 之间转换的方面。您可以使用 std::wstring_convert()std::wbuffer_convert()执行实际转换的函数。

关于c++ - Windows:UTF-16BE 到 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749953/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com