iconv Linux下编码转换
来源:互联网 发布:卡戴珊跟希尔顿比知乎 编辑:程序博客网 时间:2024/05/13 11:23
iconv Linux下编码转换
知识标签:linux, iconv, 编码
有时程序运行时会用到编码转换,这时就用到iconv的3个函数
特写了一个测试小代码以作备忘
iconv3个函数原型
iconv_t iconv_open(const char *tocode, const char *fromcode);
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
int iconv_close(iconv_t cd);
code
#include<iostream>#include<string.h>#include<stdio.h>#include<iconv.h>void convert(char* left, size_t sizeleft, char* right, size_t sizeright){ printf("left: %s\n", left); printf("rightleft: %ld\n", sizeleft); printf("right: %s\n", right); printf("sizeright: %ld\n", sizeright); printf("--------------------------\n"); iconv_t cd = iconv_open("gbk", "utf-8"); if((iconv_t)-1 == cd) { std::cout << "cd error !" << std::endl; return; } iconv(cd, (char**)&left, (size_t*)&sizeleft, (char**)&right, (size_t*)&sizeright); printf("left: %s\n", left); printf("rightleft: %ld\n", sizeleft); printf("right: %s\n", right); printf("sizeright: %ld\n", sizeright); iconv_close(cd);}int main(void){ char buf[1024]; size_t size_buf = sizeof(buf); //字符串一定要初始化为0,养成习惯,否则总是出现莫名错误 memset(buf, 0, size_buf); strcpy(buf, "星期二我是中国人hello"); size_t len_buf = strlen(buf); char buf2[1024]; size_t size_buf2 = sizeof(buf2); memset(buf2, 0, size_buf2); //第二参数应该是缓存区的大小,不应该是缓存区中字符长度 //应该是size_buf,不应该是len_buf convert(buf, size_buf, buf2, size_buf2); return 0;}
结果
终端编码设置为utf-8
的结果:
终端编码设置为gbk
的结果:
总结
- buf一定要
memset(buf, 0, sizeof(buf))
- size_buf一定要是
缓存区的大小
,不应该是缓存区中字符长度
- 三步:1.
iconv_open
获取描述符 2.iconv
转码 3.iconv_close
关闭描述符- iconv转码后转码的结果保存在
buf
里面,而不是buf2
0 0
- iconv Linux下编码转换
- Linux下字符编码转换 -- iconv命令
- linux 下iconv 的使用方法(编码转换)
- linux 下iconv 的使用方法(编码转换)
- linux下iconv编码转换的用法
- linux下iconv编码转换的用法
- linux 编码类型转换-iconv
- Linux下实用的文件编码转换命令工具iconv
- Linux下编码转换(iconv函数族)
- Linux下编码转换(iconv函数族)
- 使用iconv命令转换linux下字符集编码
- linux下使用iconv转换编码:UTF8转GBK
- Linux下编码转换(iconv函数族)
- 在Linux下使用iconv转换字符串编码
- 在Linux下使用iconv转换字符串编码
- 在Linux下使用iconv转换字符串编码
- linux c 字符编码转换函数 iconv
- linux文件编码的转换iconv
- shell脚本基础
- 在Linux系统下安装配置memcached的方法
- Android自定义组件---《找呀找呀找工作》
- ThinkPHP中自定义目录结构
- Linux操作系统安全配置步骤
- iconv Linux下编码转换
- Excel中在第三张表中求其他两张表的和?
- Filter
- Cocos2d-X中的ProgressTimer
- Oracle SQL语句总结备查
- 概率图模型推断之Belief Propagation
- 关于Cookie安全性设置的那些事
- 关于Cookie中的Path和domain
- matlab中repmat函数的用法