在使用ndk开发应用程序时,有时需要字符编码转换,这里使用开源库icon进行字符编码转换,代码如下

char * convertString(const char * fromCode, const char * toCode, const char * source)
{
    size_t retlen = 0;
    size_t inbytesleft = strlen(source);
    if (!strncmp(fromCode, "UTF-16LE", 8))
    {
        inbytesleft = gg_wcslen((unsigned short *)source) * 2;
    }
    size_t outbytesleft = inbytesleft * 4 + 2;
    retlen = outbytesleft;

char * tmp = new char[outbytesleft];
    memset(tmp, 0, outbytesleft);

char * inbuf = (char *)source;
    char * outbuf = tmp;

iconv_t cd = iconv_open(toCode, fromCode);
    size_t errorNo = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
    retlen -= outbytesleft;

if (errorNo == -1)
    {
        memcpy(tmp, source, inbytesleft);
    }
    else
    {
        memset(tmp+retlen, 0, outbytesleft);
    }

iconv_close(cd);

return tmp;
}

unsigned short* gbkToUnicode(const char* gbk)
{
    return (unsigned short*)convertString("GBK","UTF-16LE",gbk);
}

char* gbkToUtf8(const char* gbk)
{
    return convertString("GBK","UTF-8",gbk);
}

char* unicodeToGbk(const unsigned short* unicode)
{
    return convertString("UTF-16LE","GBK",(const char*)unicode);
}

char* unicodeToUtf8(const unsigned short* unicode)
{
    return convertString("UTF-16LE","UTF-8",(const char*)unicode);
}

unsigned short* utf8ToUnicode(const char* utf8)
{
    return (unsigned short*)convertString("UTF-8","UTF-16LE",utf8);
}

char* utf8ToGbk(const char* utf8)
{
    return convertString("UTF-8","GBK",utf8);
}

这里支持UTF-16LE,UTF-8和GBK之间的编码相互转换

android 使用icon进行字符编码转换相关推荐

  1. Android字符编码转换,GBK转UTF-8

    Android字符编码转换,GBK转UTF-8 网上看了很多都不能用,最后看到这个方法,很靠谱,分享给大家! String str; str = new String(str.getBytes(&qu ...

  2. 《MySQL tips:隐式类型转换与隐式字符编码转换对查询效率的影响》

    维护一个交易系统,交易记录表tradelog包含交易流水号(tradeid).交易员id(operator).交易时间(t_modified)等字段. create table 'tradelog' ...

  3. 字符编码转换类(支持多国语言)

    头文件StrConvertor.h /* * 字符编码转换库,支持多国语言. */ #pragma once #include <string>class CStrConvertor { ...

  4. iconv 判断字符编码_iconv字符编码转换全攻略

    iconv(http://www.gnu.org/software/libiconv/)是一个开源的字符编码转换库,可以"方便"的完成几乎所有的编码转换工作.说简单是因为,它常用的 ...

  5. c语言使用iconv函数实现字符编码转换

    c语言使用iconv函数实现字符编码转换 linux下提供了iconv库来实现字符编码转换,先介绍下命令行: iconv [-f encoding] [-t encoding] [inputfile ...

  6. Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    文章目录 前言 简述 ASCII GBK Unicode UTF-8 应用场景 开发环境 编码转换 16进制数值转换为16进制字符 16进制数值转化为字符串 16进制字符串转换为Unicode字符串 ...

  7. linux下字符编码转换

    2019独角兽企业重金招聘Python工程师标准>>> 关于字符编码: 字符编码笔记:ASCII,Unicode和UTF-8: http://www.ruanyifeng.com/b ...

  8. java linux urlencode_java字符编码转换研究(转)

    1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...

  9. linux windows 字符编码转换,Linux操作系统下汉字编码的转换

    因为项目的需要linux下将GBK编码转换为utf8编码,google一下,网上的相关资源比较少,下面的操作经过本人的反复试验.本例子同样适用于其他的编码转换. 有gbk到utf8的转换过程,需要经过 ...

最新文章

  1. Zookeeper工作原理
  2. Java大神推荐,java编程基础必备(必看)
  3. Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
  4. Python编程系列教程第13讲——隐藏数据和封装
  5. 2021牛客暑期多校训练营3
  6. php 获取当月的阴历值,PHP计算节日、节气、农阳历互换的代码
  7. Python变量的作用范围
  8. Bayesian Personalized Ranking
  9. 孟小峰:大数据管理系统的发展与机遇
  10. Zend Studio9.02 字体显示,WIN7系统
  11. ubuntu中的 magick++编程问题及编译方法
  12. 蓝桥杯:第39级台阶
  13. A Survey on Vision Transformer
  14. 曾经是亚洲第一大学,如今靠野猪上热搜?这所985实在是太委屈了!!
  15. citrix ADC VPX Models整理
  16. python从文件中读数据并进行排序
  17. 大型医院影像PACS系统三维重建技术(获取数据、预处理、配准、重建和可视化)
  18. (一,1NN-QI)神经网络与深度学习——吴恩达深度学习配套笔记
  19. 用声音检测技术降低美国“赌城”枪击案伤亡(paper+github)
  20. MAC OS X Wifi不稳定的解决办法(包括IPad2)

热门文章

  1. 用女人的温暖造就男人的成功
  2. php开发实例大全pdf百度云盘_你们要的PDF免费转换工具,支持在线编辑PDF。
  3. 2021 Google 开发者大会进行时:汇聚开发者合力,共建全球技术生态
  4. 超详细 企业微信推送每日天气或课表(所有东西都可推送)
  5. 【安卓学习之第三方库】 Rxpay学习:支付宝微信支付
  6. 块、内联、内联块都有哪些及其特点
  7. 拒绝验证因为有你,我不孤单
  8. pmp考试难度怎么样?难吗?
  9. 通过FinalShell打通ssh隧道
  10. disable属性导致后台接收值为null解决方法