`
LanderRooter
  • 浏览: 11784 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

java命令转换unicode

阅读更多
背景:在做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码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码,具体可以看看最佳实践部分。
转载 http://javastudy.blog.51cto.com/183528/73284
分享到:
评论

相关推荐

    latex2unicode:将LaTeX标记转换为Unicode(在Scala和Java中)

    《LaTeX到Unicode的转换工具:latex2unicode在Scala与Java中的实现》 在数字化信息时代,LaTeX作为一款强大的排版系统,被广泛应用于科研、教育和出版领域。然而,LaTeX语法并非通用,有时我们需要将其转换为更常见...

    Unicode编码所有汉字

    除了直接使用Unicode转义序列,Java还提供了`Character`类和`String`类的方法来处理Unicode编码,例如`Character.codePointAt()`、`Character.toChars()`等,可以帮助你方便地转换、查找和操作Unicode字符。...

    字符转换为UNICODE工具

    用户可能需要在终端或命令提示符中运行这个程序,输入字符或字符串,然后工具会输出相应的UNICODE值。例如,输入字符"A",可能会输出码点0041(16进制)。 4. UNICODE的应用 UNICODE在网页开发(HTML、CSS、...

    Unicode码转中文和中文转Unicode码的最简便的方法

    中文转Unicode码和Unicode码转中文的过程在Java环境下可以通过`native2ascii`工具轻松实现,这个工具是Java开发工具包(JDK)的一部分。 **中文转Unicode码**: 1. 首先,你需要确保已经安装了Java JDK。JDK包含了...

    Unicode转换器

    本软件将unicode编码转换成中文,也可以将中文转换成unicode编码,并支持文本文件,此软件是java编写,运行前请确定是否安装了jre.2008.3.9,我查看了下载的留言,不会使用.有两个方法打开,此jar是可执行的.如果你安装了...

    unicode 转码器 编码转换

    这通常可以通过编程语言(如Python的`codecs`库,Java的`Charset`类等)或专门的转码工具(如“汉字Unicode转换器.exe”)来完成。 4. "安装软件.bat"和"下载说明.txt":这两个文件名表明它们可能包含安装步骤和...

    unicode编码转换

    ### Unicode编码转换详解 #### 一、Unicode简介 在深入探讨如何进行Unicode编码转换之前,我们首先需要了解什么是Unicode以及其重要性。 Unicode是一种国际化的字符编码标准,它旨在为世界上所有的文字提供统一的...

    js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码

    - **ASCII转换Unicode**:将ASCII码转换为对应的Unicode字符。 - **Unicode转换ASCII**:将Unicode字符转换为其对应的ASCII码。 #### JS代码示例 以下是一些相关的JS代码示例,这些示例展示了如何进行字符的转换...

    unicode操作库

    1. **Unicode编码**: 包括UTF-8、UTF-16、UTF-32等编码形式,理解它们的区别和转换方法。 2. **字符串操作**: 如复制(strcpy-like)、拼接(strcat-like)等,需要考虑到Unicode字符串可能比ASCII字符串更复杂,每...

    java 处理中文问题代码

    正确的做法是在获取输入前就确定其原始编码,然后直接转换到Java内部的Unicode编码,或者转换到目标编码格式。例如,如果前端发送的`user_name`参数是以GB2312编码的,那么应该直接使用`getBytes("GB2312")`来获取...

    Java中压缩与解压--中文文件名乱码解决办法

    这个问题主要源于Java中默认使用的编码方式与实际文件名编码不一致,尤其是在Windows系统下,文件名通常采用GB2312或GBK编码,而Java中的`ZipInputStream`和`ZipOutputStream`类默认使用的是Unicode编码,这种编码...

    java中文乱码问题

    所以 Java 处理字符时总是经过了两次编码转换,一次是从指定编码转换为 UNICODE 编码,一次是从 UNICODE 编码转换为指定编码。 二、乱码问题的原因 如果在读入时用错误的形式解码字符,则内存存储的是错误的 ...

    Access mdb 转 sqlite 数据库java代码

    标题中的“Access mdb 转 sqlite 数据库java代码”指的是使用Java编程语言将Microsoft Access(mdb)数据库转换为SQLite数据库。Access是微软公司的一款关系型数据库管理系统,而SQLite是一款轻量级、开源的嵌入式...

    使用java实现,通过zpl指令调用 zebra打印机打印标签,含二维码及中文

    Java代码中可能通过设置适当的编码方式,将中文字符串转换为对应的ZPL指令。 3. **二维码生成**:生成二维码可以使用开源库如`com.google.zxing`。这个库提供了生成二维码的能力,包括添加中文字符。Java代码会先生...

    JAVA中文字符编码问题详解.doc

    因此,JAVA 处理字符时总是经过了两次编码转换,一次是从指定编码转换为 UNICODE 编码,一次是从 UNICODE 编码转换为指定编码。如果在读入时用错误的形式解码字符,则内存存储的是错误的 UNICODE 字符。 二、JAVA ...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-053-Java基本语法-Unicode码.avi 北京动力节点-Java编程零基础教程-054-Java基本语法-UTF-8.avi 北京动力节点-Java编程零基础教程-055-Java基本语法-UTF-8的编码格式.avi 北京...

    21天学通JAVA.pdf

    - `native2ascii`: 用于转换Unicode编码为ASCII编码。 - `javap`: Java反汇编器,用于查看字节码文件的内容。 - `jdb`: Java调试器,用于调试Java程序。 - `jps`: 显示正在运行的Java进程的信息。 - `keytool`:...

    免费_java中文乱码字符集解决大全

    - 在编译Java源文件时,明确指定文件编码,例如使用javac.exe -encoding UTF-8 myFile.java命令。 - 在运行Java程序时,同样指定运行时环境的编码,例如使用java -Dfile.encoding=UTF-8 myFile命令。 - 在WEB应用...

    21天学通JAVA(高清版)

    native2ascii命令用于将Unicode码转换为ASCII码,-reverse参数则进行反向转换。javap命令可以将class文件反编译成Java字节码,jdb是Java的调试工具,jps用于查看JVM进程信息,keytool用于生成keystore文件。jar命令...

Global site tag (gtag.js) - Google Analytics