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

标签 c++ c

您可能认为这很容易获得,但我很难找到一个简单的库函数,它将 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/

相关文章:

c - 错误 : Expected ';' , ',' 或 ')' 之前(第一个参数的名称)

c - 我们如何在 c 程序中获取 .exe 文件的完整路径?

c++ - 在 C++/C 中通配,在 Windows 上

C++: header 问题

c++ - 为什么需要空终止符?

c++ - Visual Studio 2017 Linux 远程构建 - 在每个构建中重新编译所有 cpp 文件

c++ - 不相交的线段,同时最小化累积长度

c++ - 使用 FreeType 加载彩色字体

c - 在c中逐行读取文件

c - 由于 for 循环而使用 ffmpeg 的应用程序出现段错误?