linux C gbk utf-8编码转换
来源:互联网 发布:网络加速哪个好用 编辑:程序博客网 时间:2024/04/30 15:11
用linux C 下的函数调用创建中文目录、文件等,字符串的编码格式要求是utf-8格式的。
比如想要使用 int mkdir(const char *pathname, mode_t mode); 创建一个中文的目录。那么pathname的编码格式要求是utf-8的,而不能是gb3212/gbk的,否则就是乱码。
那么如果linux C下如何进行gbk<---->utf-8编码转换的编码装换的?使用的是iconv函数簇。
- #include <iconv.h>
- int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
- {
- iconv_t cd;
- int rc;
- char **pin = &inbuf;
- char **pout = &outbuf;
- cd = iconv_open(to_charset,from_charset);
- if (cd==0)
- return -1;
- memset(outbuf,0,outlen);
- if (iconv(cd,pin,&inlen,pout,&outlen) == -1)
- return -1;
- iconv_close(cd);
- return 0;
- }
- int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
- {
- return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
- }
- int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
- {
- return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);
- }
其中
iconv函数族的头文件是iconv.h,使用前需包含之。
#include <iconv.h>
iconv函数族有三个函数,原型如下:
(1) iconv_t iconv_open(const char *tocode, const char *fromcode);
此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。
(2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);
此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。
(3) int iconv_close(iconv_t cd);
此函数用于关闭转换句柄,释放资源。
转自:http://blog.csdn.net/sealyao/article/details/5043138
- linux C gbk utf-8编码转换
- linux C gbk utf-8编码转换
- linux C gbk utf-8编码转换
- linux C gbk utf-8编码转换
- linux下GBK->UTF-8文件编码批量转换脚本
- linux下GBK->UTF-8文件编码批量转换脚本
- Linux下GBK->UTF-8文件编码批量转换命令
- linux 下 GBK-UTF-8文件编码批量转换脚本
- Linux下GBK文件编码批量转换UTF-8命令
- linux 批量转换GBK到UTF-8编码的方法
- MySQL GBK→UTF-8编码转换
- iconv转换编码格式 gbk utf-8
- 编码转换:UTF-8 BOM to GBK
- gbk转utf-8 iconv 编码转换
- UNICODE, GBK, UTF-8编码的转换
- PHP转换编码问题GBK/UTF-8
- PHP转换编码问题GBK/UTF-8
- python 之编码转换 unicode, utf-8, utf-16, GBK
- C++静态成员(静态数据成员和静态成员函数)
- 使用Xmanager远程桌面连接Redhat Linux
- 图表条件显示
- Cannot locate boot class path file /system/framework/core.odex 反编译odex
- 如何构建千万用户级别 后台数据库架构设计的思路
- linux C gbk utf-8编码转换
- Springmvc+mybatis的整合过程
- Yii组件CTreeView使用小结
- Java最大公约数和最小公倍数
- Oracle里Varchar的参数(byte和char)的区别测试
- MDI父窗体添加背景、背景上显示自动换行文本并解决闪烁的问题
- Java多线程(三)线程同步
- 鄙视ie
- Memcache(MC)系列(七)Memcache stats命令