Linux C 字符集转换,UTF-8,GB2312

最近帮朋友写个系统接口的小东东,2个系统字符集不同,一个采用UTF-8,一个采用GB2312,不得已需要转换字符集。转换函数记录如下:

#include

#include

#include

#include

#define OUTLEN 255

main()

{

char *in_utf8 = "utf8字符串";

char *in_gb2312 = "\xbe\xb2\xcc\xac\xc4\xa3\xca\xbd";

char out[OUTLEN];

int rec ;

//unicode码转为gb2312码

rec = u2g(in_utf8,strlen(in_utf8),out,OUTLEN);

printf("unicode-->gb2312 out=%s\n",out);

//gb2312码转为unicode码

rec = g2u(in_gb2312,strlen(in_gb2312),out,OUTLEN);

printf("gb2312-->unicode out=%s \n",out);

}

//代码转换:从一种编码转为另一种编码

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;

}

//UNICODE码转为GB2312码

int u2g(char *inbuf,int inlen,char *outbuf,int outlen)

{

return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);

}

//GB2312码转为UNICODE码

int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)

{

return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);

}

Linux字符串转码utf8,Linux C/C++ 字符集转换,UTF-8,GB2312相关推荐

  1. linux python源码安装,linux上源码安装python

    以下例子基于python 2.7.9,其他版本同理.# 1.下载python# wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tg ...

  2. linux内核源码漫游,Linux内核源代码漫游

    Linux源代码,以帮助读者对源代码的体系结构以及很多相关的unix特性的实现有一个很好的理解.目标是帮助对Linux不甚了解的有经验的C程序员对整个Linux的设计有所了解.这也就是为什么内核漫游的 ...

  3. linux nat源码分析,Linux下NAT/NAPT规则源码分析

    前面有一篇文章分析了为什么在PREROUTING做DNAT对本地连接不起作用?本文再紧接着上文,深入分析一下NAT/NAPT的规则. 事情的起因要从上的那篇的文章说起,因为我的本科生毕业设计也是做P2 ...

  4. Linux编译程序源码环境,Linux下对nodejs环境进行源码编译并部署云应用

    Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言. 该环境安装非常简单,这里 ...

  5. linux权限源码分析,Linux基础之文件权限详解

    Linux中对于权限的制定虽然没有Windows的那么精细,但是如果你了解并掌握Linux中文件的权限知识,也可以像Windows那样对权限做到精确配置. Linux中的文件权限是什么? 如何查看Li ...

  6. linux top 源码,在Linux系统中下载源码包安装Topgrade的方法,附Topgrade选项说明

    本文介绍在Linux操作系统中下载源码包安装Topgrade的方法,即下载topgrade-v2.3.0-x86_64-unknown-linux-gnu.tar.gz包并进行安装,经测试,在Ubun ...

  7. linux视频转码软件,Linux 下ffmpeg视频转码实战一安装

    第一次接触ffmpeg这个软件,其实在我们的生活中他无处不在,由她制作的视频编辑播放软件有:QQ影音 射手播放器 等等.可以解析绝大部分的视频格式,转化成你想要的格式. 和ffmpeg一起的有三个软件 ...

  8. linux 远程控制 源码,基于Linux的远程控制技术服务端实现

    远程控制系统的背景与需求分析 2.1 Linux平台下远程控制系统的产生 远程控制系统在现代社会有着越来越广泛的应用.远程控制中的嵌入技术.远程控制的数据处理与传输.远程控制的管理和远程控制的终端都取 ...

  9. linux lsof 源码分析,linux lsof详解

    lsof全名list openedfiles,也就是列举系统中已经被打开的文件.我们都知道,linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件.所以,用好lsof命 ...

最新文章

  1. R语言ggplot2可视化:箱图(box plot)可视化并且在为箱图的异常值(outlier)添加数据标签
  2. vs2005 下的发邮件代码
  3. Mogees将手势识别技术运用于新产品
  4. rand生成随机数的范围_JS中生成指定范围随机数
  5. PLSQL_Database Link的基本概念和用法(概念)
  6. latex 小于_一份菜鸡的Latex课堂作业works--(ii)
  7. python多线程为什么要用队列_Python程序中的线程操作-线程队列
  8. 服务器进bios修改启动顺序,服务器进入bios设置u盘启动
  9. 计算机四级知识试卷答案,计算机四级考试试题及答案
  10. 二分图带权最大匹配费用流_简单理解二分图与匈牙利算法
  11. java字符串中的数据排序
  12. Web 组件完整介绍
  13. 不符合直接升级win11?教你怎么直接安装win11系统
  14. DSP TI6657 执行pdkProjectCreate.bat问题解决办法
  15. 【MySQL】DML,DQL
  16. 大学生需要云服务器吗?
  17. 转至老熊三分地--inside sqlplus prelim
  18. 深入理解LINUX内核 第三版2.6 笔记
  19. oracle em错误,em使用错误,求建议
  20. 鸿蒙之境法有三乘,神都夜行录

热门文章

  1. 双向循环链表涉及双向指针的基本操作(C语言)
  2. WPF中DatePiker值绑定以及精简查询
  3. vsync信号产生与分发
  4. Excel表格生成sql语句
  5. mysql腾讯面试题_2020腾讯阿里精选面试题100+(包含答案)
  6. joint和join_MySQL的JOIN(一):用法
  7. Python稳基修炼的经典案例8(计算机二级、初学者必须掌握的例题)
  8. seata分布式事务原理_又见分布式事务之Seata
  9. python下载以后在哪找_Python下载要保存到哪
  10. C语言 模拟实现 strlen strcat strcpy函数