gpt4 book ai didi

visual-c++ - 是否可以仅使用 Windows API 将 UTF32 文本转换为 UTF16?

转载 作者:行者123 更新时间:2023-12-04 06:54:04 25 4
gpt4 key购买 nike

我试图找到可以单独使用 Windows API 将 UTF-32 文本转换为/从任何代码页。我不能使用 CLR 来完成这项任务。

Microsoft 的代码页标识符页面 http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx将 UTF-32 列为仅可用于托管应用程序。

使用 UTF-32 时 ConvertStringTo/FromUnicode 失败。

最佳答案

您可以使用此函数将 UTF-32 代码点转换为等效的 UTF-16 代码点(单个或代理,视情况而定)作为第一个参数,将高和低代理作为第二和第三个参数。
高和低代理值通过引用返回。

如果代码点低于 0x10000,那么我们只需在低代理项中通过引用返回该代码点,而高代理项为 0。

如果代码点大于 0x10000,则我们使用此维基百科页面上给出的规则计算高低代理对:

https://en.wikipedia.org/wiki/UTF-16#Example_UTF-16_encoding_procedure

这是代码:

unsigned int convertUTF32ToUTF16(unsigned int cUTF32, unsigned int &h, unsigned int &l)
{
if (cUTF32 < 0x10000)
{
h = 0;
l = cUTF32;
return cUTF32;
}
unsigned int t = cUTF32 - 0x10000;
h = (((t<<12)>>22) + 0xD800);
l = (((t<<22)>>22) + 0xDC00);
unsigned int ret = ((h<<16) | ( l & 0x0000FFFF));
return ret;
}

关于visual-c++ - 是否可以仅使用 Windows API 将 UTF32 文本转换为 UTF16?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/955484/

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