android 使用icon进行字符编码转换
在使用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进行字符编码转换相关推荐
- Android字符编码转换,GBK转UTF-8
Android字符编码转换,GBK转UTF-8 网上看了很多都不能用,最后看到这个方法,很靠谱,分享给大家! String str; str = new String(str.getBytes(&qu ...
- 《MySQL tips:隐式类型转换与隐式字符编码转换对查询效率的影响》
维护一个交易系统,交易记录表tradelog包含交易流水号(tradeid).交易员id(operator).交易时间(t_modified)等字段. create table 'tradelog' ...
- 字符编码转换类(支持多国语言)
头文件StrConvertor.h /* * 字符编码转换库,支持多国语言. */ #pragma once #include <string>class CStrConvertor { ...
- iconv 判断字符编码_iconv字符编码转换全攻略
iconv(http://www.gnu.org/software/libiconv/)是一个开源的字符编码转换库,可以"方便"的完成几乎所有的编码转换工作.说简单是因为,它常用的 ...
- c语言使用iconv函数实现字符编码转换
c语言使用iconv函数实现字符编码转换 linux下提供了iconv库来实现字符编码转换,先介绍下命令行: iconv [-f encoding] [-t encoding] [inputfile ...
- Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值
文章目录 前言 简述 ASCII GBK Unicode UTF-8 应用场景 开发环境 编码转换 16进制数值转换为16进制字符 16进制数值转化为字符串 16进制字符串转换为Unicode字符串 ...
- linux下字符编码转换
2019独角兽企业重金招聘Python工程师标准>>> 关于字符编码: 字符编码笔记:ASCII,Unicode和UTF-8: http://www.ruanyifeng.com/b ...
- java linux urlencode_java字符编码转换研究(转)
1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...
- linux windows 字符编码转换,Linux操作系统下汉字编码的转换
因为项目的需要linux下将GBK编码转换为utf8编码,google一下,网上的相关资源比较少,下面的操作经过本人的反复试验.本例子同样适用于其他的编码转换. 有gbk到utf8的转换过程,需要经过 ...
最新文章
- Zookeeper工作原理
- Java大神推荐,java编程基础必备(必看)
- Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
- Python编程系列教程第13讲——隐藏数据和封装
- 2021牛客暑期多校训练营3
- php 获取当月的阴历值,PHP计算节日、节气、农阳历互换的代码
- Python变量的作用范围
- Bayesian Personalized Ranking
- 孟小峰:大数据管理系统的发展与机遇
- Zend Studio9.02 字体显示,WIN7系统
- ubuntu中的 magick++编程问题及编译方法
- 蓝桥杯:第39级台阶
- A Survey on Vision Transformer
- 曾经是亚洲第一大学,如今靠野猪上热搜?这所985实在是太委屈了!!
- citrix ADC VPX Models整理
- python从文件中读数据并进行排序
- 大型医院影像PACS系统三维重建技术(获取数据、预处理、配准、重建和可视化)
- (一,1NN-QI)神经网络与深度学习——吴恩达深度学习配套笔记
- 用声音检测技术降低美国“赌城”枪击案伤亡(paper+github)
- MAC OS X Wifi不稳定的解决办法(包括IPad2)