native2ascii unicode编码和中文转换

原文地址:http://niewj.iteye.com/blog/1068667

2011-1-6

1.找到jdk的bin目录:

    进入到jdk的bin之下,有一个native2ascii.exe,就是它!

Cmd代码   收藏代码
  1. “运行”-“cmd”-“cd %JAVA_HOME%/bin”  

2.在我的目录“C:/nie/”之下有一个cn.txt,内容如下:

Cn.txt代码   收藏代码
  1. name=小兔子  
  2. gender=女  
  3. age=20  
  4. birth=199104  
  5. province=北京  
  6. city=北京  
  7. hobby=运动看书  
  8. #-------------------  
  9. ecol.100=不详  
  10. ecol.101=无格  
  11. ecol.102=无格或有格  
  12. ecol.103=红格  
  13. ecol.104=红格或无格  
  14. ecol.105=红栏格  
  15. ecol.106=红边栏  
  16. ecol.107=绿格  
  17. ecol.108=蓝格  
  18. ecol.109=蓝格或黑格  
  19. ecol.110=蓝格或无格  
  20. ecol.111=黑格  
  21. ecol.112=黑格或无格  
  22. ecol.113=黑格或蓝格或红格  
  23. ecol.114=黄格  
  24. ecol.115=紫格  
  25. ecol.116=朱格  
  26. ecol.117=方格  
  27. ecol.118=小方格  
  28. ecol.119=红方格  
  29. ecol.120=横格  
  30. ecol.121=兰格  
  31. ecol.122=米格  
  32. ecol.123=白格  
  33. ecol.124=直格  
  34. ecol.125=竹简形行格  
  35. ecol.126=红格或黑格  
  36. ecol.127=兰格或红格  
  37. ecol.128=墨栏  
  38. ecol.129=乌丝栏  

  转换成unicode:

Gbk 代码   收藏代码
  1. native2ascii -encoding GBK c:\nie\cn.txt c:\nie\cn_gbk.txt    //GB2312也可以  
Cn_gbk.txt代码   收藏代码
  1. name=\u5c0f\u5154\u5b50  
  2. gender=\u5973  
  3. age=20  
  4. birth=199104  
  5. province=\u5317\u4eac  
  6. city=\u5317\u4eac  
  7. hobby=\u8fd0\u52a8\u770b\u4e66  
  8. #-------------------  
  9. ecol.100=\u4e0d\u8be6  
  10. ecol.101=\u65e0\u683c  
  11. ecol.102=\u65e0\u683c\u6216\u6709\u683c  
  12. ecol.103=\u7ea2\u683c  
  13. ecol.104=\u7ea2\u683c\u6216\u65e0\u683c  
  14. ecol.105=\u7ea2\u680f\u683c  
  15. ecol.106=\u7ea2\u8fb9\u680f  
  16. ecol.107=\u7eff\u683c  
  17. ecol.108=\u84dd\u683c  
  18. ecol.109=\u84dd\u683c\u6216\u9ed1\u683c  
  19. ecol.110=\u84dd\u683c\u6216\u65e0\u683c  
  20. ecol.111=\u9ed1\u683c  
  21. ecol.112=\u9ed1\u683c\u6216\u65e0\u683c  
  22. ecol.113=\u9ed1\u683c\u6216\u84dd\u683c\u6216\u7ea2\u683c  
  23. ecol.114=\u9ec4\u683c  
  24. ecol.115=\u7d2b\u683c  
  25. ecol.116=\u6731\u683c  
  26. ecol.117=\u65b9\u683c  
  27. ecol.118=\u5c0f\u65b9\u683c  
  28. ecol.119=\u7ea2\u65b9\u683c  
  29. ecol.120=\u6a2a\u683c  
  30. ecol.121=\u5170\u683c  
  31. ecol.122=\u7c73\u683c  
  32. ecol.123=\u767d\u683c  
  33. ecol.124=\u76f4\u683c  
  34. ecol.125=\u7af9\u7b80\u5f62\u884c\u683c  
  35. ecol.126=\u7ea2\u683c\u6216\u9ed1\u683c  
  36. ecol.127=\u5170\u683c\u6216\u7ea2\u683c  
  37. ecol.128=\u58a8\u680f  
  38. ecol.129=\u4e4c\u4e1d\u680f  

  而且这两种生成的编码是相同的,因为GBK兼容GB2312;

 

3.现在反过来按照GBK编码再转回中文本地:

Native2ascii_gbk代码   收藏代码
  1. native2ascii -reverse -encoding GBK c:\nie\cn_gbk.txt c:\nie\gbk_back.txt  

 或者:

Native2ascii_gbk代码   收藏代码
  1. native2ascii -reverse c:\nie\cn_gbk.txt c:\nie\gbk_back.txt  

 都会产生转换转换结果如上面的中文!

 

“GBK”、“GB2312”、“8859_1”可以互转;

但是/unicode/UTF-8转换之后不能转回中文;

--------------------------------------风骚的分割线-------------------------------------

4.小结:

    如果要使用本地中文转换成unicode编码:

使用参数:native2ascii -encoding GBK(或者GB2312);

    如果要使用unicode再转换回来生成我们看的懂的中文:

使用参数:native2ascii -reverse -encoding GBK(或者GB2312);也可以省掉-encoding GBK(或者GB2312),只用-reverse就可以。

5.备注:如果是要转换成8859_1的话,再翻转中文的时候就必须加上-encoding 8859_1才可以回转成中文;其他的UTF-8则回转不成功,还没有弄明白原因。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用:那么既然都已经推出了 unicode 统一编码字符集,为什么不统一全部使用 ucs-2/utf-16 编码呢?这是因为其实对于英文使用国家来说,字符基本上都是 ASCII 字符,使用 utf-8 编码一个字节代表一个字符很常见,如果使用 ucs-2/utf-16 编码反而会浪费空间。 引用:这段代码的核心就是我们上面提到的 utf-8 和 utf-16 转换的公式。我们详细解析一下这个函数,先假设传递过来的字符串是“a中文”,对应 utf-8 编码十六进制是 “0x610xE40xB80xAD0xE60x960x87”,转换步骤如下: 引用:发现了么?dalvik 代码中并没有对 4 字节 utf-8 编码的字符串进行处理,而 ART 中专门用了很详细的注释说明了针对 4 字节编码的 utf-8 需要转成代理对(surrogate pair)!为什么之前 Android 版本没有针对 4 字节编码进行处理?我的一个推测是:可能老版本的 Android 系统使用的是 ucs-2 编码,并没有对 BMP 之外的平面集做处理,所以也不存在 4 字节的 utf-8,在扩展为 utf-16 编码之后,自然而然就需要额外对 4 字节的 utf-8 进行转换成代理对的操作。 Hash'native2ascii' 不是内部或外部命令,也不是可运行的程序或批处理文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Android Native 开发之 NewString 与 NewStringUtf 解析](https://blog.csdn.net/u201011221/article/details/112590839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值