`

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

实际应用中:
比如可以这样利用native2ascii:
native2ascii -encoding gbk temp.properties application_zh_CN.properties
这里将根据一个临时文件temp.properties输出了application_zh_CN.properties,然后把application_zh_CN.properties中的文件内容替换这个临时文件的内容就可以了。

分享到:
评论

相关推荐

    基于hadoop的百度云盘源代码(亲测可用完整项目代码)

    基于hadoop的百度云盘源代码(亲测可用完整项目代码),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的百度云盘源代码(亲测可用完整项目代码)基于hadoop的

    cruise软件模型,串联混动ECMS,cruise增程混动仿真模型,A-ECMS控制策略,Cruise混动仿真模型,串联混动汽车动力性经济性仿真 关于模型 1.本模型是基于增程混动架构搭建的cru

    cruise软件模型,串联混动ECMS,cruise增程混动仿真模型,A-ECMS控制策略,Cruise混动仿真模型,串联混动汽车动力性经济性仿真。 关于模型 1.本模型是基于增程混动架构搭建的cruise仿真模型,串联混动架构,实现简易的A-ECMS控制,可用于相关策略开发及课题研究。 2.模型是基于cruise simulink搭建的base模型,策略模型基于MATLAB Simulink平台搭建完成,通过C++编译器编译成dll文件给CRUISE引用,实现联合仿真。 3.尽可能详细的描写了策略说明,大约14页左右,主要解释策略搭建逻辑及各模式间的转。 4.模型主要供学习使用,不同的车型控制策略必然不同,请不要抱着买来即用的态度拿后,具体车型仿真任务请根据需求自行变更模型,或联系模型定制。 5.使用模型前请确保有相应软件基础,卖的是模型,不是软件教程。 关于模型策略问题可以适当交流,但不做软件保姆式教学。 6.模型由“王浮生不怕生”搭建,拿后模型提供五天文字,盗版用户不提供,找谁买的问谁去。 7.文件包含:cruise模型、simulink策略模型、策略说明文档。 8.DLL文件使

    Java 21 新特性详解:虚拟线程、字符串模板与模式匹配等亮点

    Java 21 是一款里程碑式的版本,虚拟线程让高并发编程突破极限,字符串模板让文本处理更简单直观,模式匹配增强则彻底解放你的双手。加上性能优化、集合新功能,它不仅让开发更轻松,还能大幅提升应用运行效率。快来体验这个重新定义开发体验的版本吧!

    基于java的无人超市管理系统设计与实现.docx

    基于java的无人超市管理系统设计与实现.docx

    2021中国新锐品牌发展研究:食品饮料行业报告.pdf

    2021中国新锐品牌发展研究:食品饮料行业报告

    永磁同步电机FOC矢量控制4种方法模型:双闭环PI控制、电流滞环控制、转速环滑模控制、电流环PR控制4个simulink模型 三相永磁同步电机矢量控制Matlab Simulink仿真模型,带有各部分

    永磁同步电机FOC矢量控制4种方法模型:双闭环PI控制、电流滞环控制、转速环滑模控制、电流环PR控制4个simulink模型 三相永磁同步电机矢量控制Matlab Simulink仿真模型,带有各部分模块详细介绍文档及参考文献17篇。 内容非常全面,说明文档从转速电流双闭环PI控制开始介绍,同时含滞环电流控制、滑模速度控制、静止坐标系下电流PR控制的原理介绍、模型介绍、参数计算步骤、模块结构介绍和仿真波形分析。 方便对比加深理解,以及改进丰富内容。 总共含4个矢量控制(FOC)的Simulink仿真模型,清单如下: (1)一般矢量控制即转速环、电流环均采用PI调节器,则对应仿真模型PMSM_FOC_PI.slx文件。 (2)在(1)的基础上把电流环PI控制器成滞环控制,则对应仿真模型PMSM_Zhihuan.slx文件。 (3)把转速环PI控制器成滑模控制,则对应仿真模型PMSM_SMC.slx文件。 (4)若电流控制中不采用坐标变,把电流环PI控制器成PR控制器,则对应仿真模型PMSM_PR.slx。 Matlab2015b以上都能正常运行,参数已调好,可直接运行。 内含资料,对Si

    数据结构与算法中的回文串:马拉车算法与中心扩展法的Python实现及其应用

    内容概要:本文详细介绍了关于寻找最长回文子串的相关知识,包括前置理论、不同求解方法的具体操作及其优势。首先,阐述了回文串这一特殊结构的概念及其特性——正序逆序完全一致。紧接着,围绕中心扩展法和马拉车算法展开叙述。前者基于字符逐一检查周边字符的方法,在每一点向外延伸探索最长相同序列。而后者利用预处理阶段将字符间隔用特殊符号填充形成全新字符串形式,并建立相应的辅助工具(如回文半径数组)用于跟踪回文中点位置与范围变动情况,再经由巧妙规则判定并逐步推进搜索进度,从而大大降低了运行成本。最后还提到了两种常规方法——动态规划与中心扩展的具体思路以及它们各自适用的情况和局限性。 适合人群:正在研究或学习数据结构和算法特别是字符串处理相关领域的技术人员和爱好者。 使用场景及目标:帮助开发者针对字符串匹配类的问题,尤其是回文判定和查找场景,掌握更多高效的解决方案,优化程序性能。具体应用场景如文本编辑器、搜索引擎中的关键字检索等方面可能会涉及到这类算法的应用。

    录屏软件亲测可用哦,非常好用

    录屏

    C语言实践作业飞机大战.zip

    C语言实践作业飞机大战.zip

    人机对话意图识别数据集

    人机对话意图识别数据集

    瑞幸咖啡企业微信群话术及人设搭建SOP.xlsx

    瑞幸咖啡企业微信群话术及人设搭建SOP.xlsx

    基于java的居家养老健康管理系统设计与实现.docx

    基于java的居家养老健康管理系统设计与实现.docx

    基于java的在线租房招聘平台设计与实现.docx

    基于java的在线租房招聘平台设计与实现.docx

    基于java的企业信息管理系统设计与实现.docx

    基于java的企业信息管理系统设计与实现.docx

Global site tag (gtag.js) - Google Analytics