native2ascii

求助编辑百科名片

native2ascii.exe 是 Java 的一个文件转码工具,是将特殊各异的内容 转为 用指定的编码标准文体形式统一的表现出来,它通常位于 JDK_home\bin 目录下,安装好 Java SE 后,可在命令行直接使用 native2ascii 命令进行转码。

目录

背景
使用方法
用法介绍
JDK中自带的native2ascii功能

编辑本段背景

  在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文 件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而计算机系统编码常常是GBK等编码。需要将系统的编码转换 为java正确识别的编码问题就解决了。

编辑本段使用方法

  native2ascii 工具将带有本机编码字符(非拉丁 1 和非单一码字符)的文件转换成带有Unicode编码字符的文件。 假设需要转化的属性文件为:D:\src\resources.properties(含有中文字符) ,转化后的属性文件为:D:\classes\resources.properties(中文字符统一转化为Unicode) 那么使用如下命令  JAVA_HOME\bin\native2ascii -encoding GBK D:\src\resources.properties D:\classes\resources.properties

编辑本段用法介绍

  如果应用系统是面向多种语言的,编程时就不得不设法解决国际化问题,包括操作界面的风格问题、提示和帮助语言的版本问题、界面定制个性化问题等。 由于Java语言具有平台无关、可移植性好等优点,并且提供了强大的类库,所以Java语言可以辅助我们解决上述问题。Java语言本身采用双字节字符编码,采用大汉字字符集,这就为解决国际化问题提供了很多方便。从设计角度来说,只要把程序中与语言和文化有关的部分分离出来,加上特殊处理,就可以部分解决国际化问题。在界面风格的定制方面,我们把可以参数化的元素,如字体、颜色等,存储在数据库里,以便为用户提供友好的界面;如果某些部分包含无法参数化的元素,那么我们可能不得不分别设计,通过有针对性的编码来解决具体问题。

编辑本段JDK中自带的native2ascii功能

  1、只转换特定字符  在控制台中可以输入汉字回车后,就可以看到转移后的字符了。  Ctrl+C退出。  2、转换properties文件  native2ascii allMessages_zh_CN.input.properties allMessages_zh_CN.properties  将文件allMessages_zh_CN.input.properties编码后输出为allMessages_zh_CN.properties。  为了方便properties文件的管理,建议纯中文的配置文件用input命名。  3、反向单一properties文件  native2ascii -reverse allMessages_zh_CN.properties allMessages_zh_CN.txt  注意-reverse参数  4、批量反向所有的properties文件  JDK自带的工具native2ascii可以将uncode编码的文件转换为本地编码的文件,但是不能批量转换文件。[1]

参考资料
  • 1

    JDK自带命令native2ascii的用法

    http://ajava.org/course/java/12577.html

2:

JDK native2ascii工具用法

背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。
1、native2ascii简介:native2ascii 是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。Unicode编码的定义:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。(声明:Unicode编码定义来自互联网)。
2、获取native2ascii:安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是。
3、native2ascii的命令行的命名格式
native2ascii -[options] [inputfile [outputfile]]
说明:
-[options]:表示命令开关,有两个选项可供选择
-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台。
4、最佳实践:首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录,在test目录里建立一个zh.txt文件,文件内容为:“熔岩”,打开“命令行提示符”,并进入C:\test目录下。下面就可以按照说明一步一步来操作,注意观察其中编码的变化。
A:将zh.txt转换为Unicode编码,输出文件到u.txt
native2ascii zh.txt u.txt
打开u.txt,内容为“\u7194\u5ca9”。
B:将zh.txt转换为Unicode编码,输出到控制台
C:\test>native2ascii zh.txt
\u7194\u5ca9
可以看到,控制台输出了“\u7194\u5ca9”。
C:将zh.txt转换为ISO8859-1编码,输出文件到i.txt
native2ascii -encoding ISO8859-1 zh.txt i.txt
打开i.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。
D:将u.txt转换为本地编码,输出到文件u_nv.txt
native2ascii -reverse u.txt u_nv.txt
打开u_nv.txt文件,内容为“熔岩”。
E:将u.txt转换为本地编码,输出到控制台
C:\test>native2ascii -reverse u.txt
熔岩
可以看到,控制台输出了“熔岩”。
F:将i.txt转换为本地编码,输出到i_nv.txt
native2ascii -reverse i.txt i_nv.txt
打开i_nv.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。。
G:将i.txt转换为GBK编码,输出到i_gbk.txt
native2ascii -reverse -encoding GBK i.txt i_gbk.txt
打开i_gbk.txt文件,内容为“\u00c8\u00db\u00d1\u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。
H:将u_nv.txt转码到本地编码GBK,输出到控制台
C:\test>native2ascii -reverse -encoding ISO8859-1 i.txt
熔岩
从这个结果看,目标达到到了,编码i.txt为ISO8859-1,转为本地编码后内容为“熔岩”。从这里应该意识到,native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为(生成的)目标文件的编码格式。这一点非常的重要!切记!!
继续探索,新建文件12a.txt,内容“12axyz”。看看纯字母数字的编码又如何。
I:将纯字母数字的文本文件12a.txt转换为Unicode编码
native2ascii 12a.txt 12a_nv.txt
打开12a_nv.txt文件,内容为“12axyz”。
继续测试,转为ISO8859-1编码看看
C:\test>native2ascii -encoding ISO8859-1 12a.txt
12axyz
结果还是没有转码。
从结果可以得出结论:对于纯数字和字母的文本类型件,转码前后的内容是一样的。
5、总结:native2ascii 是一个非常的好转码工具,并且转码是可逆的!而其真正的含义并非本地编码——>转码为ASCII码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码,具体可以看看最佳实践部分。
实际应用中:
比如可以这样利用native2ascii:
native2ascii -encoding gbk      temp.properties     application_zh_CN.properties
这里将根据一个临时文件temp.properties输出了application_zh_CN.properties,然后把application_zh_CN.properties中的文件内容替换这个临时文件的内容就可以了.(以上是转载的)
JAVA本身就支持多国语言编码,不需要写任何程序,可以很简单的 实现。 秘诀就是两点:
  
  1、所有HTML/JSP页面全部采用UTF-8编码
  
  2、客户端浏览器完全支持UTF-8编码

  步骤:
  1、首先把所有的HTML/JSP的ContentType都设为UTF-8
  
  2、然后对于JSP程序中的非ASCII码提示信息都不应该写在程序里面,都应该放在
  application.properties里面统一管理。
  
  3、对HTML用native2ascii工具统一做一次处理,把HTML中的非ASCII码都转换为Unicode编码。
  
  4、针对不同的语言,写不同的application.properties,比如说简体中文是
  application_zh_CN.properties,繁体中文是application_zh_TW.properties这样,然后对这些配置信
  息文件同样用native2ascii工具处理一次,把非ASCII码统统转为Unicode编码。
  
  5、在Servlet的request.getCharacterEncoding()获得客户端的操作系统默认编码,然后set到Struts
  的HTTPSession的Locale中。
  
  OK!现在不同的客户访问,就会显示不同的语言版本了。你可以看看此时你的浏览器的字符集,就是
  UTF-8。现在你的网站和Google一样了,嘿嘿,其实你有心的话,看看你的浏览器访问Google的时候是
  什么字符集吧
  
  切记:所有的HTML/JSP都要设为UTF-8编码,所有的文件中的非ASCII码字符都要用native2ascii工具转
  为用ASCII表示的Unicode编码。

native2ascii命令:

(native2ascii -encoding gb2312 ApplicationResources_xx_CN.properties

ApplicationResources_zh_CN.properties)

如果还有文件乱码的话加过滤器就可以解决了!

将ascii码转换成汉字相关推荐

  1. ASCII码转换成特殊字符

    #region ASCII码转换成特殊字符                         ASCIIEncoding shuoming = new ASCIIEncoding();          ...

  2. 在eclipse中安装properties插件PropertiesEditor及设置(附图),ASCII码转换成中文

    在eclipse中安装properties插件PropertiesEditor及设置(附图),ASCII码转换成中文 安装成功后ASCII还是不能转换成中文的,原因是设置里面没有把编码设置为utf8的 ...

  3. Java中,如何把ascii码转换成字符?

    public class Test {public static void main(String[] args) {int a = 98;char c = (char) a;System.out.p ...

  4. C#数字转字母,ASCII码转换

    字母转换成数字 byte[] array = new byte[1]; //定义一组数组array array = System.Text.Encoding.ASCII.GetBytes(string ...

  5. IntelliJ idea 配置文件ascii码转换

    为什么80%的码农都做不了架构师?>>>    配置文件中的中文会转成ascii码: ############# \u6570\u636e\u6e90\u914d\u7f6e sta ...

  6. vb6源码 ymodem_任意字符的ASCII码转换工具,基于VB6的源代码VB字符串处理源码下载...

    内容索引:VB源码,字符措置惩罚,ASCII,字符转换 任意字符的ASCII码转换工具,鉴于VB6的源代码,能够把任意字符(数字.字母.汉字)转化成ascii码,也能够把ascii码还原成最初的字符. ...

  7. python代码实现ASCII码转换

    ☞☞☞点击查看更多优秀Python博客☜☜☜ ASCII码转换 python代码实现ASCII码转换 ==**文章导航:==** python代码实现ASCII码转换 自己刚开始学习python不久, ...

  8. 二进制转化成ascll_微机原理实验-二进制到ASCII码转换

    广州大学学生实验报告 开课学院及实验室:实验中心 电子信息楼 2013 年 11 月 4 日 学 院 机电 年级.专 业.班 姓名 学号 实验课程名称 微机原理实验 成绩 实验项目名称 二进制到 AS ...

  9. c语言汉字的ascii,C语言中两位ASCII码可以表示汉字

    ******************************************************** 现在开始分析: 资料一说: "206 210 176 174 214 236 ...

  10. 将unicode转换成汉字

    将unicode转换成汉字的引申 unicode转换成汉字方法: public static String UnicodeToString(String str) { Pattern pattern ...

最新文章

  1. 【超越白皮书3】DAG技术解析与实测
  2. Airtable(数据管理)
  3. 层和 native_React-Native与小程序的底层框架比较
  4. [湖南师大集训2018 7 26] hunger 解题报告 (SPFA)
  5. 如何看懂源代码–(分析源代码方法)
  6. 十八般武艺玩转GaussDB(DWS)性能调优:总体调优策略
  7. 网络安全相关行业必备网站
  8. 如何交叉编译 移植 QT
  9. package.json 入门
  10. 查看80端口连接状态
  11. JCreator中不能引入servlet包的解决办法
  12. uniapp小程序解压压缩包 (使用jszip)
  13. 计算机表格折线图添加图例,如何将Excel表格中插入的折线图中的圆圈设置为方块或三角形...
  14. 三星手机com.android.systemservice卸载,完美卸载 系统程序卸载就用System App Remover
  15. 苹果的名字测试软件,教你iOS12人脸识别测颜值捷径安装使用教程及iPhone XR修改AppleID姓名教程...
  16. 坐标转换源代码,C++/C, 极为精确地大地坐标系转地心坐标系,地心坐标系转站心坐标系
  17. 2012 CSP-S 初赛 答案解析
  18. HDMI、AV音视频端子介绍
  19. 前端python开发_【2020Python修炼记】前端开发之 前端工具和HTML
  20. 感染神经网络模型的病毒 AI malware EvilModel: Hiding Malware Inside of Neural Network Models

热门文章

  1. 贵州省中职学校计算机教材电子版,中职计算机基础课件_贵州省中职学校计算机应用基础教学工作计划.doc...
  2. RBF神经网络——案例二
  3. 单片机c语言1602怎么接线,lcd1602中文资料分享:lcd1602接线图_lcd1602与单片机连接图 - 全文...
  4. 1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程
  5. 工业自动化控制软件SCADA数据模型的使用方法实例
  6. 计算机专业英语第五版课文翻译,计算机专业英语教程(第5版)翻译完整版
  7. 【系统分析师之路】系统分析师冲刺习题集(数学与经济管理)
  8. win10系统安装提示带有gui的服务器,安装win10提示“由于技术员系统中无接入音频设备,要启动GUI”如何...
  9. 处理器架构 (十三) ARMv6架构下 各微架构的不同
  10. 金蝶k3服务器系统要求,金蝶K3服务器安装及其相关要求[精选].doc