iconv函数原型为:

size_t iconv (iconv_t cd,  char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);

第一个参数是iconv的描述字,其实是指针,第二个参数表示下一次转换位置的指针的指针,第三个参数表示最多处理inbytesleft个字节,第四个参数表示下一次转换后输出的指针的指针,第五个参数表示最多输出outbutesleft个字节。iconv函数一次转换一个多字节字符,每次字符转换,*inbuf增加已转换的字节数,*inbytesleft相应地减少已转换的字节数;对应地,*outbuf和*outbytesleft作相应的修改,同时修改cd的转换状态。iconv函数返回本次调用中转换的字符数,可逆的转换不计入。

注意iconv会改变这五个参数的值,所以我们在使用的时候一定要注意。

使用的时候或者传副本,或者先把值记录下来,用后在恢复,个人比较倾向于第一种方法。

如下例子:

char* utf8_input="伟大的hongchangfirst";

char* utf8_input_tmp=utf8_input;

size_t insize=strlen(utf8_input);

const size_t outsize=1024*1024;

char* gbk_input=new char[outsize];

char8 gbk_input_tmp=gbk_input;

size_t outsize_tmp=outsize;

size_t rc=iconv(converter, &utf8_input_tmp, &insize, &gbk_input_tmp, &outsize_tmp);

以下是iconv函数的英文注释:

/* Converts, using conversion descriptor ‘cd’, at most ‘*inbytesleft’ bytes

starting at ‘*inbuf’, writing at most ‘*outbytesleft’ bytes starting at

‘*outbuf’.

Decrements ‘*inbytesleft’ and increments ‘*inbuf’ by the same amount.

Decrements ‘*outbytesleft’ and increments ‘*outbuf’ by the same amount. */

作者:hongchangfirst

iconv java_libiconv之iconv函数的使用方法相关推荐

  1. php中icon,php中iconv函数的使用方法

    本篇文章中的内容介绍的是php中iconv函数的使用方法,在这里分享给大家,有需要的朋友可以参考一下 最近在做一个程序,需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只 ...

  2. php iconv gbk,php iconv中文乱码怎么办

    php iconv中文乱码的解决办法:首先下载libiconv函数库,并安装libiconv:然后重新编译php:最后在需要转成的编码后加入参数"//IGNORE"即可. php中 ...

  3. php sendmail方法,PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法

    本文实例讲述了PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法.分享给大家供大家参考,具体如下: 1.php mail()函数在windows不能用,需要安装sen ...

  4. 技术图文:举例详解Python中 split() 函数的使用方法

    背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...

  5. HTML用乘法函数,Excel乘法函数的使用方法和详细步骤

    Excel是一款非常强大的办公软件,其应用非常广泛.我们在日常工作中经常都要用到Excel,使用Excel进行处理大型数据的表格,要在数据上计算就会使用到数据上相乘,这时候我们就需要使用乘法的函数,那 ...

  6. 一分钟详解initUndistortRectifyMap函数bug修复方法

    本文首发于微信公众号「3D视觉工坊」--一分钟详解initUndistortRectifyMap函数bug修复方法 在上一篇文章OpenCV中initUndistortRectifyMap函数存在bu ...

  7. R语言ggplot2可视化散点图、可视化两个数值变量之间的关系、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息

    R语言ggplot2可视化散点图.可视化两个数值变量之间的关系(Scatter plot).使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线.自定义数据点的大小.色彩.添加 ...

  8. R语言ggplot2可视化散点图(scatter plot)、并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram)、使用geom_smooth函数基于lm方法拟合数据点之间

    R语言ggplot2可视化散点图(scatter plot).并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram).使用geom_smooth函数基于lm方法拟合数据点之间 ...

  9. R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线

    R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线.对指定范围的数据拟合曲线 目录

最新文章

  1. JavaScript:事件冒泡和事件委托
  2. 网络丢包问题排查总结
  3. [20170603]12c Top Frequency histogram.txt
  4. ajaxfileupload踩过的坑
  5. 内核链表list.h文件剖析
  6. 洛谷P4092树——并查集
  7. linux 很多mysql 命令用不了,一些不常用的但重要的MySQL操作命令
  8. python web自动化测试框架搭建(功能接口)——功能测试模块
  9. du,df命令和磁盘管理
  10. hello linux
  11. 脚本——LoadRunner文件操作函数详解
  12. fgo梅林服务器维护,FGO针对开挂用户处理公告 封禁账号并回复异常数据
  13. api质量等级_API质量等级与机油选用指引
  14. stm32f7 java_STM32F7开发-安装MDK超详细操作步骤
  15. DNW使用和常见问题
  16. 关于第十三届蓝桥杯大赛校内选拔赛的通知
  17. 联想笔记本电脑桌面出现计算机白色长条边,笔记本电脑屏幕出现条纹闪烁怎么解决【解决方法】...
  18. 基于华为ENSP模拟器下的多个区域互联,减少LSA的更新量,加快收敛,保障更新安全的OSPF综合练习
  19. 中国智慧停车市场运营调研及投资前景方向预测报告2022年版
  20. 全封闭(FFF/FDM)3D打印机的优点

热门文章

  1. Hadoop之Hive数据库和表的增删改查(DDL)
  2. 关于用SoapUI集成CXF生成WebService客户端,以及测试的流程和问题的解决
  3. SQL 给查询数据新增一个列,并自定义分类排序
  4. 测试android sdk是否安装成功,配置Android SDK
  5. vue组件之间的传值
  6. python中返回值详解
  7. 姿态识别(1):DeepPose : Human Pose Estimation via Deep Neural Networks
  8. 由陌生到认识——元宇宙概念
  9. webservice的POST和GET请求调用
  10. 如何framework层任意设置Android屏幕的旋转方向