java native2ascii的用法介绍

2022-10-02 17:29:50 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

将非Unicode编码字符转化为Unicode编码的字符,即国际化。

语法:native2ascii [options] [inputfile [outputfile]]

描述:如果outputfile没有指定,标准输出将用于结果输出;如果inputfile没有指定,标准输入设备将用于输入。

参数 -reverse 使用该参数将Unicode编码字符转换为本地编码字符

-encoding encoding_name 用于指定转化时使用的字符编码。默认编码从系统属性file.encoding获取。后面的表格式字符编码,指定encoding_name使用表格第一栏。

-Joption 该参数一般无需使用,用于指定Java虚拟机的启动参数。例如:-J-Xms48m设置虚拟机启动时分配内存为48M 。

Example1: native2ascii test.txt test_unicode.txt

test.txt文件内容:native2ascii测试

test_unicode.txt文件内容:native2asciiu6d4bu8bd5

Example2: native2ascii test_unicode.txt test_gbk.txt -reverse

test_gbk.txt内容:native2ascii测试

Basic Encoding Set (contained in lib/rt.jar) Supported by java.nio, java.io and java.lang APIs

Canonical Name for java.nio API

Canonical Name for java.io and java.lang API

Description

US-ASCII

ASCII

American Standard Code for Information Interchange

windows-1250

Cp1250

Windows Eastern European

windows-1251

Cp1251

Windows Cyrillic

windows-1252

Cp1252

Windows Latin-1

windows-1253

Cp1253

Windows Greek

windows-1254

Cp1254

Windows Turkish

windows-1257

Cp1257

Windows Baltic

ISO-8859-1

ISO8859_1

ISO 8859-1, Latin Alphabet No. 1

ISO-8859-2

ISO8859_2

Latin Alphabet No. 2

ISO-8859-4

ISO8859_4

Latin Alphabet No. 4

ISO-8859-5

ISO8859_5

Latin/Cyrillic Alphabet

ISO-8859-7

ISO8859_7

Latin/Greek Alphabet

ISO-8859-9

ISO8859_9

Latin Alphabet No. 5

ISO-8859-13

ISO8859_13

Latin Alphabet No. 7

ISO-8859-15

ISO8859_15

Latin Alphabet No. 9

KOI8-R

KOI8_R

KOI8-R, Russian

UTF-8

UTF8

Eight-bit UCS Transformation Format

UTF-16

UTF-16

Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark

UTF-16BE

UnicodeBigUnmarked

Sixteen-bit Unicode Transformation Format, big-endian byte order

UTF-16LE

UnicodeLittleUnmarked

Sixteen-bit Unicode Transformation Format, little-endian byte order

Not available

UnicodeBig

Sixteen-bit Unicode Transformation Format, big-endian byte order, with byte-order mark

Not available

UnicodeLittle

Sixteen-bit Unicode Transformation Format, little-endian byte order, with byte-order mark

Extended Encoding Set (contained in lib/charsets.jar) Supported by java.nio, java.io and java.lang APIs

Canonical Name for java.nio API

Canonical Name for java.io and java.lang API

Description

windows-1255

Cp1255

Windows Hebrew

windows-1256

Cp1256

Windows Arabic

windows-1258

Cp1258

Windows Vietnamese

ISO-8859-3

ISO8859_3

Latin Alphabet No. 3

ISO-8859-6

ISO8859_6

Latin/Arabic Alphabet

ISO-8859-8

ISO8859_8

Latin/Hebrew Alphabet

windows-31j

MS932

Windows Japanese

EUC-JP

EUC_JP

JISX 0201, 0208 and 0212, EUC encoding Japanese

x-EUC-JP-Linux

EUC_JP_LINUX

JISX 0201, 0208 , EUC encoding Japanese

Shift_JIS

SJIS

Shift-JIS, Japanese

ISO-2022-JP

ISO2022JP

JIS X 0201, 0208, in ISO 2022 form, Japanese

x-mswin-936

MS936

Windows Simplified Chinese

GB18030

GB18030

Simplified Chinese, PRC standard

x-EUC-CN

EUC_CN

GB2312, EUC encoding, Simplified Chinese

GBK

GBK

GBK, Simplified Chinese

ISCII91

ISCII91

ISCII91 encoding of Indic scripts

x-windows-949

MS949

Windows Korean

EUC-KR

EUC_KR

KS C 5601, EUC encoding, Korean

ISO-2022-KR

ISO2022KR

ISO 2022 KR, Korean

x-windows-950

MS950

Windows Traditional Chinese

x-MS950-HKSCS

MS950_HKSCS

Windows Traditional Chinese with Hong Kong extensions

x-EUC-TW

EUC_TW

CNS11643 (Plane 1-3), EUC encoding, Traditional Chinese

Big5

Big5

Big5, Traditional Chinese

Big5-HKSCS

Big5_HKSCS

Big5 with Hong Kong extensions, Traditional Chinese

TIS-620

TIS620

TIS620, Thai

Extended Encoding Set (contained in lib/charsets.jar) Supported by java.io and java.lang APIs

Canonical Name

Description

Big5_Solaris

Big5 with seven additional Hanzi ideograph character mappings for the Solaris zh_TW.BIG5 locale

Cp037

USA, Canada (Bilingual, French), Netherlands, Portugal, Brazil, Australia

Cp273

IBM Austria, Germany

Cp277

IBM Denmark, Norway

Cp278

IBM Finland, Sweden

Cp280

IBM Italy

Cp284

IBM Catalan/Spain, Spanish Latin America

Cp285

IBM United Kingdom, Ireland

Cp297

IBM France

Cp420

IBM Arabic

Cp424

IBM Hebrew

Cp437

MS-DOS United States, Australia, New Zealand, South Africa

Cp500

EBCDIC 500V1

Cp737

PC Greek

Cp775

PC Baltic

Cp838

IBM Thailand extended SBCS

Cp850

MS-DOS Latin-1

Cp852

MS-DOS Latin-2

Cp855

IBM Cyrillic

Cp856

IBM Hebrew

Cp857

IBM Turkish

Cp858

Variant of Cp850 with Euro character

Cp860

MS-DOS Portuguese

Cp861

MS-DOS Icelandic

Cp862

PC Hebrew

Cp863

MS-DOS Canadian French

Cp864

PC Arabic

Cp865

MS-DOS Nordic

Cp866

MS-DOS Russian

Cp868

MS-DOS Pakistan

Cp869

IBM Modern Greek

Cp870

IBM Multilingual Latin-2

Cp871

IBM Iceland

Cp874

IBM Thai

Cp875

IBM Greek

Cp918

IBM Pakistan (Urdu)

Cp921

IBM Latvia, Lithuania (AIX, DOS)

Cp922

IBM Estonia (AIX, DOS)

Cp930

Japanese Katakana-Kanji mixed with 4370 UDC, superset of 5026

Cp933

Korean Mixed with 1880 UDC, superset of 5029

Cp935

Simplified Chinese Host mixed with 1880 UDC, superset of 5031

Cp937

Traditional Chinese Host miexed with 6204 UDC, superset of 5033

Cp939

Japanese Latin Kanji mixed with 4370 UDC, superset of 5035

Cp942

IBM OS/2 Japanese, superset of Cp932

Cp942C

Variant of Cp942

Cp943

IBM OS/2 Japanese, superset of Cp932 and Shift-JIS

Cp943C

Variant of Cp943

Cp948

OS/2 Chinese (Taiwan) superset of 938

Cp949

PC Korean

Cp949C

Variant of Cp949

Cp950

PC Chinese (Hong Kong, Taiwan)

Cp964

AIX Chinese (Taiwan)

Cp970

AIX Korean

Cp1006

IBM AIX Pakistan (Urdu)

Cp1025

IBM Multilingual Cyrillic: Bulgaria, Bosnia, Herzegovinia, Macedonia (FYR)

Cp1026

IBM Latin-5, Turkey

Cp1046

IBM Arabic – Windows

Cp1097

IBM Iran (Farsi)/Persian

Cp1098

IBM Iran (Farsi)/Persian (PC)

Cp1112

IBM Latvia, Lithuania

Cp1122

IBM Estonia

Cp1123

IBM Ukraine

Cp1124

IBM AIX Ukraine

Cp1140

Variant of Cp037 with Euro character

Cp1141

Variant of Cp273 with Euro character

Cp1142

Variant of Cp277 with Euro character

Cp1143

Variant of Cp278 with Euro character

Cp1144

Variant of Cp280 with Euro character

Cp1145

Variant of Cp284 with Euro character

Cp1146

Variant of Cp285 with Euro character

Cp1147

Variant of Cp297 with Euro character

Cp1148

Variant of Cp500 with Euro character

Cp1149

Variant of Cp871 with Euro character

Cp1381

IBM OS/2, DOS People’s Republic of China (PRC)

Cp1383

IBM AIX People’s Republic of China (PRC)

Cp33722

IBM-eucJP – Japanese (superset of 5050)

ISO2022_CN_CNS

CNS11643 in ISO 2022 CN form, Traditional Chinese (conversion from Unicode only)

ISO2022_CN_GB

GB2312 in ISO 2022 CN form, Simplified Chinese (conversion from Unicode only)

JISAutoDetect

Detects and converts from Shift-JIS, EUC-JP, ISO 2022 JP (conversion to Unicode only)

MS874

Windows Thai

MacArabic

Macintosh Arabic

MacCentralEurope

Macintosh Latin-2

MacCroatian

Macintosh Croatian

MacCyrillic

Macintosh Cyrillic

MacDingbat

Macintosh Dingbat

MacGreek

Macintosh Greek

MacHebrew

Macintosh Hebrew

MacIceland

Macintosh Iceland

MacRoman

Macintosh Roman

MacRomania

Macintosh Romania

MacSymbol

Macintosh Symbol

MacThai

Macintosh Thai

MacTurkish

Macintosh Turkish

MacUkraine

Macintosh Ukraine

JDK自带的native2ascii工具完全揭密

作者:熔岩 日期:2006-12-19 MSN : leizhimin@126.com

背景:在做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,内容为“u7194u5ca9”。

B:将zh.txt转换为Unicode编码,输出到控制台

C:test>native2ascii zh.txt u7194u5ca9 可以看到,控制台输出了“u7194u5ca9”。

C:将zh.txt转换为ISO8859-1编码,输出文件到i.txt native2ascii -encoding ISO8859-1 zh.txt i.txt 打开i.txt文件,内容为“u00c8u00dbu00d1u00d2”。

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文件,内容为“u00c8u00dbu00d1u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。。

G:将i.txt转换为GBK编码,输出到i_gbk.txt native2ascii -reverse -encoding GBK i.txt i_gbk.txt 打开i_gbk.txt文件,内容为“u00c8u00dbu00d1u00d2”。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。

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码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码,具体可以看看最佳实践部分。

声明:原创作品,未经授权,拒绝转载!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197819.html原文链接:https://javaforall.cn

0 人点赞