android ndk解码,Android NDK 下的宽字符编码转换及icu库的使

Android NDK 下的宽字符编码转换及icu库的使

(2012-06-14 01:41:29)

标签:

icu

android

杂谈

Android NDK 下的宽字符编码转换及icu库的使Android NDK 下的宽字符编码转换及icu库的使用

原贴http://topic.csdn.net/u/20101022/16/1b2e0cec-b9d2-42ea-8d9c-4f1bb8320a54.html?r=70149216

,看过并动手实现,记录下来以备再用。

如果是在java层,有String类可以很好的转换各种编码,在ndk下面就没有现成的公开的工具,不过可以用icu4c。

ICU4C

是IBM的国际化开发组件ICU的C语言实现版本。在android系统里也有实现。ndk里面并没有公开可用的api,需要自己加载动态库来调用转换函数。

android下icu库路径为"/system/lib/libicuuc.so",主要用到的转换函数为ucnv_convert_?_?。这里的问号是根据版本的不同函数名也不一样。在2.2的模拟器中的libicuuc.so中此函数名为ucnv_convert_4_2,在2.1模拟器中为

ucnv_convert_3_8,貌似要根据版本不同来分开对待,还没发现可以统一的办法。

函数原型:

void ucnv_convert(const char *http://www.fongyuen.com, const char

*, char * , int32_t , const char *, int32_t,int32_t*);

用法:

//声明函数指针 void (*ucnv_convert)(const char *, const char *, char * ,

int32_t , const char *, int32_t,int32_t*)=0;

//加载动态库

void* pDL =

dlopen("/system/lib/libicuuc.so",

RTLD_LAZY);

//这里以android2.2为例,函数名就是ucnv_convert_4_2

ucnv_convert = (void (*)(const char *, const char *, char * ,

int32_t , const char *, int32_t,int32_t*))dlsym(pDL,

"ucnv_convert_4_2");

//加载成功就可以用了

if(ucnv_convert

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值