您会认为这很容易获得,但我很难找到一个简单的库函数,它将 C 或 C++ 字符串从 ISO-8859-1 编码转换为 UTF-8。我正在读取 8 位 ISO-8859-1 编码的数据,但需要将其转换为 UTF-8 字符串,以便在 SQLite 数据库和最终的 Android 应用程序中使用。
我找到了一种商业产品,但目前超出了我的预算。
原文由 gordonwd 发布,翻译遵循 CC BY-SA 4.0 许可协议
您会认为这很容易获得,但我很难找到一个简单的库函数,它将 C 或 C++ 字符串从 ISO-8859-1 编码转换为 UTF-8。我正在读取 8 位 ISO-8859-1 编码的数据,但需要将其转换为 UTF-8 字符串,以便在 SQLite 数据库和最终的 Android 应用程序中使用。
我找到了一种商业产品,但目前超出了我的预算。
原文由 gordonwd 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 boost::locale 库:
http://www.boost.org/doc/libs/1_49_0/libs/locale/doc/html/charset_handling.html
代码如下所示:
#include <boost/locale.hpp>
std::string utf8_string = boost::locale::conv::to_utf<char>(latin1_string,"Latin1");
原文由 Spacemoose 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
如果您的源编码 始终 为 ISO-8859-1,这很简单。这是一个循环:
为了安全起见,您需要确保输出缓冲区是输入缓冲区的两倍,或者包括一个大小限制并在循环条件中检查它。