Submitted by gouki on 2010, June 21, 8:50 AM
在用netbeans的时候,最让人郁闷的是,他不能指定某一个目录下的文件的编码,这时候象处理康盛的玩意就很痛苦了。
康盛在最近的系统版本里,所有的文件都是ansi格式的(可以采用GBK编码打开),他所有的对UTF8支持和对BIG等的支持,全部通过语言包+charset来处理。
因此,在用netbeans的时候,打开language目录就全是乱码了。因为格式不再是ansi而是utf-8或者big5,郁闷啊。
以前是用PHP遍历目录解决,还好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中的文件内容替换这个临时文件的内容就可以了。
原文来自:http://geeksun.javaeye.com/blog/275802,我自己也试了一下,确实有点用。如果配合一下批处理,那会更方便。当然你甚至还可以用PHP遍历处理,只是你可以不用mb_encode_convert来转换,而是用这个native2ascii来处理。只是自己也感觉好象有点傻(如果真的就一个文件,我情愿用editplus打开另存为了)如果。。。文件多,我是不是可以用editplus打开然后自定义,after save这个触发控件来处理呢?额,我太挫了。
其实这也是PHP开发者的无奈,编码问题一直就被纠缠着这么多年了。不知道从PHP6开始会怎么样,是否自动、强制、一定要UTF8才能处理?那样就可以解决很多事情了。语言包?可以尝试象wordpress一样,用mo文件来解决。忽略单个文件编码,这样会不会好上很多呢?只是对国内开发人员来说,也很郁闷,因为大多数人都会懒得写MO文件,而是直接在程序里面把文字输出了。
Tags: jdk, java
Software | 评论:0
| 阅读:19199
Submitted by gouki on 2010, June 2, 1:56 PM
让我幸福的是,在netbeans写的hello world编译成功了。原来一直没有成功过。介绍一下出错情况,免得有人再走冤枉路吧。。
1、由于我是采用了netbeans for php,因此在安装的scala插件时提示我没有JDK,下载完JDK后,在netbeans/etc/netbeans.conf中指定jdk的路径
2、重启netbeans,进入插件栏,再选择scala。
3、会帮我安装涉及到的一些包,大约有10个左右(没事,这个是自动识别的)
4、安装完重启后,再进行插件栏,选择Scala,终于可以安装了。
5、新建Scala项目,会有一个简单的hello world,OK,直接按F6进行调试,会发现错误,告诉你没有在启动的时候设定Dscala.home的路径。
6、下载scala源码(好象用2.8的较好吧?),扔到某个目录下。如:d:\program files\scala,修改netbeans/etc/netbeans.conf文件,在netbeans_default_options的选项的最后加上:-J-Dscala.home=d:\progra~1\scala ,【请仔细看好左边的字,路径是d:\progra~1\scala,而不是完整的d:\program files\scala,因为完整的路径有空格,所以导致路径每次都认为是/netbeans/files/scala】也没有找到类似资料。。。
7、重启netbeans,按下F6,输出:
XML/HTML代码
- init:
- deps-jar:
- Compiling 1 source file to D:\My Documents\NetBeansProjects\ScalaApplication1\build\classes
- No changes to recompile
- compile:
- run:
- Hello, world!
- BUILD SUCCESSFUL (total time: 6 seconds)
OK,至此一切正常。
最后我是参考:http://pierre8r.blogspot.com/2009/09/installing-scala-plugin-for-netbeans-on.html,失败。。。全局路径好象没啥用。
也看过:http://www.cnscala.com/viewthread.php?tid=49&highlight=netbeans,还是没用。。。后来我干脆是根据出错信息自己改了改(其实就是那个Dscala.home的路径,原来一直是采用完整路径所以一直失败。)
Tags: netbeans, jdk, scala
Scala & Ruby | 评论:0
| 阅读:29981
Submitted by gouki on 2010, May 26, 9:32 AM
昨天下载完了jdk1.6update20后,总以为启动netbeans的时候会自动更換jdk路径的。(原来我是想他是直接从系统路径里读取的。)但是在安装scala插件的时候,它还是提示我用的是jre而不是jdk。但是给了我一个帮助,地址为:http://wiki.netbeans.org/FaqRunningOnJre
OK,原来这么简单
1、先安装JDK full版
2、打开<netbeans安装目录>/etc/netbeans.conf,更換里面的netbeans的JDK的路径。。
3、保存,重启netbeans,Over了
第二种方式就是 --jdkhome command-line option e.g. ./bin/netbeans --jdkhome /usr/local/share/java/jdk1.6.0_07/
这是在快捷方式中指定jdkhome,这样比较适合你有很多JDK版本时适用。
Tags: netbeans, jdk, java, scala
Scala & Ruby | 评论:1
| 阅读:25347
Submitted by gouki on 2010, May 25, 2:43 PM
前文就说了,我最近在学scala,于是乎,我用日常我常用的IDE开始装scala插件,结果它告诉我需要安装jdk,一下子有点郁闷,原来,我安装系统时,为了装netbeans,都是装的JRE,因为我仅用来开发PHP。可是现在要JDK了,找不到地方下载呀。虽然我知道,它就在sun.com,但一下子急着找却找不到。
网上连这个都有现成的资料,而且会教你一步一步的配置这东西,这让我想起我在01年左右配置java环境的事情,想不到一下子过去10年了。10年之前我觉得java很复杂,那时候选择了学asp,和PHP,现在,又要走回去了。不过我还是坚持了一下下,没有用java,而的是scala,其实。。。他们两个很相象啊。
“工欲善其事,必先利其器”。进行程序开发,首先要安装开发相关的软件,并且熟悉这些工具软件的基本使用。本章介绍一下两类开发工具的使用,重点是 JDK最新版本以及JDK下载、安装和配置。
基础开发工具
基础开发工具是进行程序设计的基础,包含开发中需要的一些基本功能,例如编译、运行等,是其它开发工具的基础。Java语言的基本开发工具是SUN 公司免费提供的JDK。
实际开发中,为了方便和程序开发的效率,一般不直接使用基础开发工具,所以对于很多基础开发工具,只需要掌握其基本的使用即可。
集成开发环境(IDE)
集成开发环境是指将程序设计需要的很多功能,例如代码编辑、代码调试、程序部署等等一系列功能都整合到一个程序内部,方便程序开发,并提高实际的开 发效率,简化了程序设计中的很多操作。
Java语言的集成开发环境很多,常见的有Eclipse、JBuilder、NetBeans等等。由于实际开发中,基本都是使用集成开发环境进 行开发,所以在学习中必须熟练掌握该类工具的使用。一般集成开发环境的使用都很类似,在学习时只要熟练掌握了其中一个的使用,其它的工具学习起来也很简 单。
本文以Eclipse为例来介绍集成开发环境的基本使用。
JDK开发环境
JDK(Java Developer’s Kit),Java开发者工具包,也称J2SDK(Java 2 Software Development Kit),是SUN公司提供的基础Java语言开发工具,该工具软件包含Java语言的编译工具、运行工具以及执行程序的环境(即JRE)。
JDK现在是一个开源、免费的工具。JDK是其它Java开发工具的基础,也就是说,在安装其它开发工具以前,必须首先安装JDK。
对于初 学者来说,使用该开发工具进行学习,可以在学习的初期把精力放在Java语言语法的学习上,体会更多底层的知识,对于以后的程序开发很有帮助。
但是JDK未提供Java源代码的编写环境,这个是SUN提供的很多基础开发工具的通病,所以实际的代码编写还需要在其它的文本编辑器中进行。其实 大部分程序设计语言的源代码都是一个文本文件,只是存储成了不同的后缀名罢了。常见的适合Java的文本编辑器有很多,例如JCreator、 Editplus、UltraEdit等。
下面依次来介绍JDK的下载、安装、配置和使用。
1 JDK的下载
如果需要获得JDK最新版本,可以到SUN公司的官方网站上进行下载,下载地址为:
http://java.sun.com/javase/downloads/index.jsp
下 载最新版本的“JDK 6 Update 6”,选择对应的操作系统,以及使用的语言即可。
在下载Windows版本时,有两个版本可供下载,,分别是:
Windows Online Installation:在线安装版本,每次安装时都从网络上下载安装程序,在下载完成以后,进行实际的安装。
Windows Offline Installation:离线安装版本,每次安装时直接进行本地安装。通常情况下,一般下载离线安装版本。
其实如果不需要安装JDK最新版本的话,也可以在国内主流的下载站点下载JDK的安装程序,只是这些程序的版本可能稍微老一些,这些对于初学者来说 其实问题不大。
2 JDK的安装
Windows操作系统上的JDK安装程序是一个exe可执行程序,直接安装即可,在安装过程中可以选择安装路径以及安装的组件等,如果没有特殊要 求,选择默认设置即可。程序默认的安装路径在C:\Program Files\Java目录下。
3 JDK的配置
JDK安装完成以后,可以不用设置就进行使用,但是为了使用方便,一般需要进行简单的配置。由于JDK提供的编译和运行工具都是基于命令行的,所以 需要进行一下DOS下面的一个设定,把JDK安装目录下bin目录中的可执行文件都添加到DOS的外部命令中,这样就可以在任意路径下直接使用bin目录 下的exe程序了。
配置的参数为操作系统中的path环境变量,该变量的用途是系统查找可执行程序所在的路径。
配置步骤为:
1、“开始”>“设置”>“控制面板”>“系统”
如果控制面板的设置不是经典方式,那么可以在控制面板的“性能和维护”中找到“系统”。当然,也可以选择桌面上的“我的电脑”,点击鼠标右键,选择 “属性”打开。
2、在“系统属性”窗口中,选择“高级”属性页中的“环境变量”按钮。
3、在“环境变量”窗口中,选择“系统变量”中变量名为“Path”的环境变量,双击该变量。
4、把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。例如JDK的安装路径下的bin 路径是C:\Program Files\Java\jdk1.6.0_04\bin,则把该路径添加到Path值的起始位置,则值为:C:\Program Files\Java\jdk1.6.0_04\bin;C:\Program Files\PC Connectivity Solution\;C:\Program Files\Java\jdk1.6.0_04\bin;C:\j2sdk1.4.2_11\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
以 上路径在不同的计算机中可能不同。
配置完成以后,可以使用如下格式来测试配置是否成功:
1、 打开“开始”>“程序”>“附件”>“命令提示符”
2、 在“命令提示符”窗口中,输入javac,按回车执行
如果输出的内容是使用说明,则说明配置成功。如果输出的内容是“’javac’不是内部或外部命令,也不是可执行的程序或批处理文件。”,则说明配 置错误,需要重新进行配置。
常见的配置错误为:
1)JDK的安装和配置路径错误,路径应该类似C:\Program Files\Java\jdk1.6.0_04\bin。
2)分隔的分号错误,例如错误的打成冒号或使用全角的分号
--EOF--http://developer.51cto.com/art/200907/134559.htm
Tags: java, jre, jdk, scala, netbeans
Scala & Ruby | 评论:0
| 阅读:26153