Android NDK中字符串的相互转换

时间:2014-09-12 18:25:19
【文件属性】:

文件名称:Android NDK中字符串的相互转换

文件大小:11KB

文件格式:RAR

更新时间:2014-09-12 18:25:19

Android NDK 字符串 转换 ucnv_convert

前提说明:在Android NDK中,一个wchar_t是4个字节,也就是说Android NDK下,unicode字符是采用ucs4的,而在windows系统下,unicode是采用ucs2,即每个unicode字符是占用两个字节的,可以用sizeof()函数来证明上面说的。如果在Android NDK下,想要强制指定一个wchar_t是2个字节,即跟windows系统下一样,采用ucs2,需要在Android.mk中添加一句LOCAL_CFLAGS := -fshort-wchar即可。但是如果指定wchar_t为两个字节的话,则所有用于处理unicode字符串的函数(如wcscpy,wcslen,wcscmp,wcscat)则都不在适用,需要你自己重新写这些函数,当然这都很容易处理。我写的例子中还是使用默认的ucs4来处理unicode字符串的。见文件as_base_fun.cpp. 在Android NDK中还没有现成的函数来处理字符串的相互转换,但是Android底层有个libicuuc.so库文件,在目录/system/lib/下可以找到这个文件。在这个文件中有个函数ucnv_convert,我们可以从这个库中找到这个函数,然后利用这个函数来转换字符串。在不同的Android版本中,这个函数的名字可能会有点不一样,比如在Android 2.3下函数名为:ucnv_convert_44。


【文件预览】:
As_base_fun.cpp
Android 中字符串转换.docx

网友评论

  • 居然忘记评论了,这么好的菜鸟教程,赞一个。
  • 很有用的的东西,谢谢!
  • 还算可以,对我等到菜鸟有用
  • 可以用,但这个方法感觉适应性不强,假如Android有了新版本,ucnv_convert的版本又变了,方法就失效了。
  • 简单明了,谢谢分享
  • 很不错,值得借鉴
  • d代码不错,就是没有全部的汉子和标点符号的范围
  • 的确能够提供有价值的参考帮助。
  • 解决了大问题,昨天还为ansi转unicode纳闷了半天,试了一些办法都不行比如setlocal , 谢了楼主
  • 确实是有用的东西。。。
  • 确实是有用的东西,有需要的同志可以下来看看