ICONV字符编码转换库
字符编码的刚需场景里,ICONV库确实是个还不错的老朋友。
GNU 项目里的老牌编码转换工具,支持UTF-8、GBK、Unicode这些常见编码互转。跨平台、多语言字符数据的时候,蛮好用。
用法也挺简单,像在 C/C++里,你只需要调用iconv_open
、iconv
和iconv_close
三个函数就能搞定转换流程。输入输出缓冲区分配好,数据咔咔就能转。
比如要把 GBK 转 UTF-8,大致就这么写:
#include
#include
char* input = "GBK 字符串";
size_t input_len = strlen(input);
char* output = malloc(2 * input_len);
size_t output_len = 2 * input_len;
iconv_t cd = iconv_open("UTF-8", "GBK");
if (cd == (iconv_t)-1) {
// 错误
}
size_t result = iconv(cd, &input, &input_len, &output, &output_len);
if (result == (size_t)-1) {
// 错误
}
iconv_close(cd);
除了 C 语言,Python、Java、Perl这些语言也有 ICONV 的绑定包,跨语言用起来也还算方便。命令行也支持,直接用iconv
命令搞定文件编码转换,适合批量文本。
注意一点,转换时最好预估好输出缓冲区的大小,像 UTF-8 比 GBK 占字节多,不够用会出错。
如果你在搞国际化项目,或者老系统数据迁移,ICONV绝对值得一试。小巧、稳定、开箱即用,搞定乱码就靠它了。
537.37KB
文件大小:
评论区