#include <iconv.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <string.h> #include <sys/stat.h> int code_convert(char *from_charset, char *to_charset, char *inbuf, size_t inlen, char *outbuf, size_t outlen) { iconv_t cd; 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); *pout = '\0'; return 0; } int u2g(char *inbuf, size_t inlen, char *outbuf, size_t 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); } int main(void) { char *s = "中国"; int fd = open("test.txt", O_RDWR|O_CREAT, S_IRUSR | S_IWUSR); char buf[10]; u2g(s, strlen(s), buf, sizeof(buf)); write(fd, buf, strlen(buf)); close(fd); fd = open("test.txt2", O_RDWR|O_CREAT, S_IRUSR | S_IWUSR); char buf2[10]; g2u(buf, strlen(buf), buf2, sizeof(buf2)); write(fd, buf2, strlen(buf2)); close(fd); return 1; }
上面是使用iconv函数。
方式二: 使用如下两个函数
mbstowcs将多字节编码转换为宽字节编码
wcstombs将宽字节编码转换为多字节编码
注意, 需要系统编码的支持, 可以通过locale -a 查看系统支持的。若不支持zh_CN.gbk, 需要安装,例如,在ubuntu上的安装步骤如下:
编辑
$sudo vi /var/lib/locales/supported.d/zh-hans更新成
zh_CN.UTF-8 UTF-8 zh_SG.UTF-8 UTF-8 zh_CN.GBK GBK zh_CN.GB18030 GB18030
// 更新 $ sudo locale-gen // 查看 $ locale -a C POSIX zh_CN.gb18030 zh_CN.gbk zh_CN.utf8 zh_SG.utf8
相关推荐
这是一个应用于UTF8-GBK编码互转的代码,使用用C语言编写的,不依赖任何API,可直接调用。
基于Keil的用C语言写的UTF转GBK的代码,用的查表法,字库占用41K左右Flash,可以用于将数据流中的UTF文本转化为GBK,解决串口显示或者TF或LCD显示中文乱码的问题
c语言的gbk和unicode的编码对照表以及gbk和utf8的相互转换函数(比较全)。
通过查表实现C语言GBK、Unicode与UTF8互转,含转码表及接口函数,用于处理汉字编码的转码
跨平台(windows Linux)是纯c实现 gbk/utf8互转,Ansi/Utf8互转,
C语言UTF8与GBK字符串编码互转,不需要调用iconv以及win的相关API C语言UTF8与GBK字符串编码互转,不需要调用iconv以及win的相关API
文件编码转换(utf8与gbk相互转换) 可以将utf8(gbk)的文件转换成gbk(utf8)格式
c语言利用编码转换表实现gbk与unicode互转
gbk与utf8互转,在网页制作中非常有用
gbk转utf8C++代码实现
C语言版本的查表法,进行utf-8转gbk的方式,配合hzk字库,显示中文字符,是单片机开发的好助手
GB2312编码与utf-8编码的字符串的转换,主要使用windows api函数MultiByteToWideChar和WideCharToMultiByte,代码简洁,经测试可用
本资源提供了一个完整的UTF8转GBK和GBK转UTF8的完整字库代码,需要用的朋友,欢迎下载,字库仅支持GB2312字库。超出GB2312字库的字符暂不支持。
基于Keil MDK,用于将GBK文本转化为UTF-8,从而使用于其他UTF-8编码解码的平台
利用libiconv在windows下实现汉字utf8编码和gbk编码之间的转换,内涵完整的VS2013工程
GBK、UTF-8批量文件3秒快速转码工具(支持GBK,UTF-8免费转换),UTF-8/GBK编码在线转换工具,压缩包可以有多目录与文件,如目录中有图片不会转码,但是会随转码好的文件一起打包下载。 使用帮助 . 上传压缩包(仅支持zip...
UTF8到GBK的转换
c 源码, gbk和utf8 互相转换(不含库) 通过查表实现转换 实际转换为 gbk -- unicode --utf8
utf8和gbk互转工具,可以自动检测文件的编码的格式,然后实现向另一种格式的转换
gbk与utf8互转工具有效的为gbk编码与utf编码相互装换