采用native2ascii工具将中文字符的资源文件转换为Unicode代码格式的文件

       资源文件对文件内容有严格的要求:只能包含ASCII字符。所以必须将非ASCII字符的内容转换为Unicode代码的表示方式。

 一、如果在应用开发时,直接采用Unicode代码编辑资源文件是很不方便的,所以,通常直接使用正常的方式编写资源文件,在测试或部署时再采用工具进行转换。JDK在bin目录下为我们提供了一个完成此功能的native2ascii工具,它可以将中文字符的资源文件转换为Unicode代码格式的文件。

例如,在E:\Unicode目录下有一个resource_zh_CN.properties文件,里面的内容包含中文,文件内容如下:

greeting.common=你好!
greeting.morning=早上好!
greeting.afternoon=下午好!

转换步骤如下:

1、首先找到jdk安装的bin目录,打开命令提示符,如下图

引用:那么既然都已经推出了 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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值