gpt4 book ai didi

c++ - ISO-8859 到 UTF-8 的转换 C++

转载 作者:行者123 更新时间:2023-11-28 00:50:45 28 4
gpt4 key购买 nike

我一直在尝试使用从以下位置获得的代码将 ISO-8859 字符集转换为 utf-8: Convert ISO-8859-1 strings to UTF-8 in C/C++这是我的代码:

#include <iostream>
#include <string>

using namespace std;
int main(int argc,char* argv[])
{
string fileName ="ħëlö";
int len= fileName.length();
char* in = new char[len+1];
char* out = new char[2*(len+1)];
memset(in,'\0',len+1);
memset(out,'\0',len+1);
memcpy(in,fileName.c_str(),2*(len+1));


while( *in )
{
cout << " ::: " << in ;
if( *in <128 )
{
*out++ = *in++;
}
else
{
*out++ = 0xc2+(*in>0xbf);
*out++ = (*in++&0x3f)+0x80;
}
}
cout << "\n\n out ::: " << out << "\n";
*out = '\0';
}

但是输出是

::: ħëlö ::: ?ëlö ::: ëlö ::: ?lö ::: lö ::: ö ::: ?

out :::

输出“out”应该是一个 utf-8 字符串,但它不是。我在 Mac OS X 中得到这个..

我在这里做错了什么..?

最佳答案

您正在递增循环中的 out 指针,导致您无法跟踪输出的开始位置。传递给 cout 的指针是递增的指针,因此它显然不再指向生成的输出的开头。

此外,out 的终止发生在 打印它之后,这当然是错误的做法。

另外,这依赖于源代码和东西的编码,不是很好。您应该以不同的方式表达输入字符串,使用具有十六进制值的单个字符或安全起见的其他内容。

关于c++ - ISO-8859 到 UTF-8 的转换 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217434/

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