一、ICU4C及ucnv_convert概述
如果是在java层,有String类可以很好的转换各种编码,在ndk下面就没有现成的公开的工具,不过可以用icu4c。
ICU4C 是IBM的国际化开发组件ICU的C语言实现版本。在android系统里也有实现。ndk里面并没有公开可用的api,需要自己加载动态库来调用转换函数。
android下icu库路径为"/system/lib/libicuuc.so",主要用到的转换函数为ucnv_convert_*。这里的星号是根据版本的不同函数名也不一样,通常关联如下。函数名不同,导致程序的跨平台出现了问题,本文主要介绍如何在不同版本下统一使用ucnv_convert函数。
android版本号 | ucnv_convert函数名 |
android2.1 | ucnv_convert_3_8 |
android2.2 | ucnv_convert_4_2 |
android2.3 | ucnv_convert_44 |
android4.0 | ucnv_convert_46 |
android4.1 | ucnv_convert_47 |
android4.2 | ucnv_convert_48 |
android4.3 | ucnv_convert_50 |
android4.4 | ucnv_convert_51 |
android7.0 |