您可能认为这很容易获得,但我很难找到一个简单的库函数,它将 C 或 C++ 字符串从 ISO-8859-1 编码转换为 UTF-8。我正在读取采用 8 位 ISO-8859-1 编码的数据,但需要将其转换为 UTF-8 字符串以用于 SQLite 数据库并最终用于 Android 应用程序。
我找到了一款商业产品,但目前超出了我的预算。
最佳答案
如果您的源编码将始终为 ISO-8859-1,这很简单。这是一个循环:
unsigned char *in, *out;
while (*in)
if (*in<128) *out++=*in++;
else *out++=0xc2+(*in>0xbf), *out++=(*in++&0x3f)+0x80;
为了安全起见,您需要确保输出缓冲区是输入缓冲区的两倍,或者包含大小限制并在循环条件中检查。
关于c++ - 在 C/C++ 中将 ISO-8859-1 字符串转换为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4059775/