在 C/C 中将 ISO-8859-1 字符串转换为 UTF-8

新手上路,请多包涵

您会认为这很容易获得,但我很难找到一个简单的库函数,它将 C 或 C++ 字符串从 ISO-8859-1 编码转换为 UTF-8。我正在读取 8 位 ISO-8859-1 编码的数据,但需要将其转换为 UTF-8 字符串,以便在 SQLite 数据库和最终的 Android 应用程序中使用。

我找到了一种商业产品,但目前超出了我的预算。

原文由 gordonwd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

如果您的源编码 始终 为 ISO-8859-1,这很简单。这是一个循环:

 unsigned char *in, *out;
while (*in)
    if (*in<128) *out++=*in++;
    else *out++=0xc2+(*in>0xbf), *out++=(*in++&0x3f)+0x80;

为了安全起见,您需要确保输出缓冲区是输入缓冲区的两倍,或者包括一个大小限制并在循环条件中检查它。

原文由 R.. GitHub STOP HELPING ICE 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题