gpt4 book ai didi

c++ - 将字符串从 UTF-8 转换为 ISO-8859-1

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:25 24 4
gpt4 key购买 nike

我正在尝试将 UTF-8 string 转换为 ISO-8859-1 char* 以便在遗留代码中使用。我看到的唯一方法是使用 iconv .

我肯定更喜欢完全基于 string 的 C++ 解决方案,然后只需在生成的字符串上调用 .c_str()

我该怎么做?请尽可能提供代码示例。如果您知道这是唯一的解决方案,我可以使用 iconv

最佳答案

我要修改我的代码 from another answer实现 Alf 的建议。

std::string UTF8toISO8859_1(const char * in)
{
std::string out;
if (in == NULL)
return out;

unsigned int codepoint;
while (*in != 0)
{
unsigned char ch = static_cast<unsigned char>(*in);
if (ch <= 0x7f)
codepoint = ch;
else if (ch <= 0xbf)
codepoint = (codepoint << 6) | (ch & 0x3f);
else if (ch <= 0xdf)
codepoint = ch & 0x1f;
else if (ch <= 0xef)
codepoint = ch & 0x0f;
else
codepoint = ch & 0x07;
++in;
if (((*in & 0xc0) != 0x80) && (codepoint <= 0x10ffff))
{
if (codepoint <= 255)
{
out.append(1, static_cast<char>(codepoint));
}
else
{
// do whatever you want for out-of-bounds characters
}
}
}
return out;
}

无效的 UTF-8 输入会导致字符丢失。

关于c++ - 将字符串从 UTF-8 转换为 ISO-8859-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38639429/

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