手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:java

JDK自带的native2ascii工具

在用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

scala是什么

前两天一直在说scala,有几个朋友问我什么 是Scala,每次让他们翻一下google也太累了,所以我就贴在博客上,当然这也是找出来的东西,我没有能力写这么多。

我个人还是认为,不管怎么样,WEB、winform、console(shell)三种编程效果的程序语言最好都要熟悉一种,不管是为了将来的职业发展还是工作应用,都会有很大的方便。
OK,开始介绍:

Scala是一门现代的多范式编程语言,志在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性。

  • Scala是面向对象的:Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和 行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。
  • Scala是函数式的: Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher- order)函数、允许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中 都被使用。
  • Scala是静态类型的:Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被 使用。
  • Scala是可扩展的:Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。 Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构:
    • 任何方式可以被用作中缀(infix)或后缀(postfix)操作符
    • 闭包按照所期望的类型(目标类型)自动地被构造
    两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具。
  • Scala可与Java和.NET进行互操作:Scala 设计时就考虑了与流行编程环境良好交互,如Java 2运行时环境(JRE)和 .NET框架(CLR)。特别是与主流面向对象语言,如Java和C#尽量无缝交互。Scala有像Java和C#一样的编译模型(独立编译,动态装载 类),允许访问成千上万的高质量类库。

来源:http://www.oschina.net/p/scala

Tags: scala, java

netbeans更换jdk路径

昨天下载完了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

JDK最新版本下载及JDK安装与配置

前文就说了,我最近在学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

PHP+MYSQL的OA为何没有Java的值钱

本文来自于天极网。意见不敢苟同,COPY过来也是想听听大家的意见。
原文如下:

为什么PHP+MYSQL的OA不如JAVA写的值钱???
  1. 现在市场上的oa基本上可归结为两大阵营,即php阵营和java阵营。但对接触oa不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异。其实, PHP + MYSQL 不值钱不仅仅局限于oa软件,而是整体上PHP + MYSQL开发的软件都不如java开发的软件值钱。为什么PHP + MYSQL 的OA为什么不值钱呢?首先得明白php和java之间的差异才行。  
  2.   
  3.   1、系统的技术架构比较  
  4.   
  5.   分层是将系统进行有效组织的方式,分而治之的思想是计算机领域中非常重要的思想。在好的分层思想引导下,便能实现“高内聚、低耦合”,也能将具体的问题割裂开来,易于控制、易于延展,更易于分配资源。PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就十分强大,可以实现多层的网络架构。运用MVC的设计模式,可使oa系统具有更加高效、合理的系统架构。技术架构的落后,使运用php编写的oa软件系统先天不足,而后天又无法补足其先天上的劣势。使得系统在可拓展性、需求应变性上与JAVA编写的oa软件系统的差距越来越大。架构的差距,注定了php做的oa充其量是个小家碧玉,始终无法和java这种大家闺秀同台竞技。  
  6.   
  7.   2、数据库访问比较  
  8.   
  9.   PHP可编译成具有与许多数据库相连接的函数。将自己编写外围的函数去间接存取数据库。通过这样的途径当更换使用的数据库时,可以轻松地修改编码以适应这样的变化。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。由于PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。  
  10.   
  11.   而Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库,访问数据库的接口比较统一。如果同样是将开发的web应用从MYSQL数据数转到ORACLE数据,PHP需要做大量的修改工作,而且比较繁琐。但JAVA开发的便只需要很少的更改便能实现。  
  12.   
  13.   数据库访问方式的差异,奠定了php开发出的oa和java开发出来的oa是马车和火车的差距,前者只能亦步亦趋而且额度有限,后者却是工业化的结晶,不仅能够包容万物而且速度上稳步提升。  
  14.   
  15.   3、安全性对比  
  16.   
  17.   在同是开源和跨平台的java面前,php丢掉了很多的优势。在代码的安全性上尤为突出。php的开发程序在别人拿到代码后,可以很容易的进行修改。而 java开发的程序由于无法看到完整的源代码,只能看到一些编译好的类文件,所以安全性较高。加之系统架构的优势,在安全性上php和java是相去甚远。  
  18.   
  19.   如果非要将php和java在安全性上做个比较的话,同一个小偷光顾php那是随便拿来随便改,想拿什么拿什么,拿的高兴还能大笔一辉某某到此一游。而光顾java的时候,便会发现警察把守,内设自动报警装置,即便突破重重阻扰后进入居室。那值钱的东西都放在加密后的保险柜中,只能望洋兴叹、铩羽而归。  
  20.   
  21.   4、前瞻性和拓展性  
  22.   
  23.   从整体来说,php适用于中小型系统,而java适用于大型系统。Php能够将单一的事件做好,但却不适合完成集成度较高的多项并发事件。为什么说php适合中小型系统而不适合做大系统呢?  
  24.   
  25.   首先, php缺乏多层结构支持。而对于大型的系统负荷站点,只能采用分布计算。将数据库、应用逻辑层和表示逻辑层彼此分开,并将同层的根据流量分开,组成二维数组。而php恰恰缺乏这种支持。  
  26.   
  27.   其次,PHP提供的数据库接口不统一,要将多个不同的数据库数据统一需要花费很大的力气。而JAVA则没有这种缺陷,可通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere,是通过CGI来提供支持的。  
  28.   
  29.   如果将Php比作将才,具备独挡一方的能力。那么java便是帅才,具有较好的前瞻性和拓展性,整体布局和协同能力强。能够指挥千军万马,最后逐鹿中原。  
  30.   
  31.   5、开发成本比较  
  32.   
  33.   既然php在诸多方面都不如java优异,那么php开发出的oa产品何以与java产品竞争呢?在于Php阵营普遍走的是低端路线,而java阵营走的是中高端路线。两者之间交叉的区域较小。  
  34.   
  35.   软件价格的高低很大程度上和自身成本和功能相挂钩。php的入门门槛较低,绝大多数学过c的程序员都很容易转型为php程序员,这使得php程序员的泛滥成灾的同时,低成本的php软件产品也层出不穷。以PHP最经典的组合PHP + MySQL + Apache为例,由于所有软件都是开源免费的,所以投入并不高。  
  36.   
  37.   而java开发需要特定的环境,成长为一个合格的java程序员需要一定的时间,java程序员的成本也是php成本的几倍。Java的web应用服务器免费的有Tomcat、JBoss等,而要想具有很好的商业化服务便必须选用Web Sphere和 Web logic。这其中投入的成本无形中便超是php成本的N倍。所以,java开发oa的成本要远远高于php开发出来的同类软件产品。但也正由于java 开发的成本较高,很难实现抄袭和短期内逾越的可能,也使得java用开发出的产品门槛更高。  
  38.   
  39.   不怕不识货,就怕货比货。Php开发出来的产品也能用,但是和java开出的同类产品是没法比较的。正因为php开发的产品整体性能和java开发的相去甚远,所以php运用低成本的低价优势和同类的java产品抗争,以价格落差来平衡购买者的心态。所以,PHP + MYSQL 的OA不值钱也就不足为怪了。  

在作者眼里,PHP好象就只能处于低层次的开发。其实开发这东西也是双面性的,你让一个新手写JAVA和让我一个老手写PHP,写出来的东西你认为哪个值钱?
之所以JAVA比PHP值钱,归根结底还是观念,大多数人认为JAVA是科班出身,而PHP则是扎根草堆,虽然最近两年也开始逐步有培训班的出现,但和JAVA比起来就差远了。
就象大腕里说的:你要用PHP写的OA,你都不好意思提出口,怎么着也得是JAVA,.NET之类的吧。

Tags: oa, 价值, java

Records:1012