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
| 阅读:19843
Submitted by gouki on 2010, May 31, 8:56 AM
以前介绍过firebug如何在chrome下使用,但其实。现在的网站在任何情况下,都可以使用firebug lite。比如你到http://getfirebug.com/firebuglite看一下,你就知道了。对呀。你明明没装firebug,怎么会有这样的界面出现?
嗯横 firebug lite现在可以被任何网页加载,然后弹出这样的界面,让你对你的操作进行实时浏览。这种东西,比较适合用在API网站,可以让你实时观察你的每一个URL请求以及获取Request等数据。
官方这么介绍lite的:
Firebug Lite: doing the Firebug way, anywhere.
- Compatible with all major browsers: IE6+, Firefox, Opera, Safari and Chrome
- Same look and feel as Firebug
- Inspect HTML and modify style in real-time
- Powerful console logging functions
- Rich representation of DOM elements
- Extend Firebug Lite and add features to make it even more powerful
安装也很简单:
Bookmarklet
Bookmark the following links:
Stable channel
Beta channel
Live link
You can also link directly to the hosted version at getfirebug.com. Copy the following code, and paste it in the TOP of the HEAD of your document:
Stable channel
Firebug Lite: <script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>
Firebug Lite debug: <script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>
Beta channel
Firebug Lite beta: <script type="text/javascript" src="https://getfirebug.com/firebug-lite-beta.js"></script>
Local link (offline)
If you need using Firebug Lite while offline, download the code, copy it to a local destination, and link the firebug-lite.js
in the TOP of the HEAD of your document:
<script type="text/javascript" src="/local/path/to/firebug-lite.js"></script>
If you want to debug the local installation, use the firebug-lite-debug.js
file instead:
<script type="text/javascript" src="/local/path/to/firebug-lite-debug.js"></script>
还有一些配置:
The properties you can change include (with respective default values):
saveCookies
- false
startOpened
- false
startInNewWindow
- false
showIconWhenHidden
- true
overrideConsole
- true
ignoreFirebugElements
- true
disableWhenFirebugActive
- true
enableTrace
- false
enablePersistent
- false
更多设置还是看:http://getfirebug.com/firebuglite#Install
Tags: firebug
Software | 评论:0
| 阅读:21818
Submitted by gouki on 2010, May 13, 9:31 AM
对firefox不停的在做优化,因为。。。实在没办法了,插件一多,FF吃内存就厉害多了。所以就在不停的想法办法。比如我把内存虚拟出128Mramdisk出来。把firefox的cache目录设进去。然后又发现,还有这个软件,可以把firefox使用到的sqlite进行一下优化(我没明白优化啥,难道是象mysql的碎片整理?)不过,不管它,先用一下下喽。。。

官方认为:The method used in SpeedyFox is 100% safe for your profile (e.g. bookmars, passwords, etc), it's well documented and tested on many computers.灰常安全。。

看了上面这张图,我基本确认应该是碎片整理,以及(可能)清空了一些已经废弃的数据。
Tags: firefox, 优化, speedyfox
Software | 评论:0
| 阅读:21707
Submitted by gouki on 2010, May 5, 9:19 PM
一直以来,我都是使用着firefox而不是chrome,虽然chrome的速度明显要比firefox快很多,但我还是使用着firefox,那是因为ff上面有很多插件是chrome没有的,比如firebug,yslow,scrapbook,readitlater,searchstatus等。但alipay uED居然推出了一款chrome上的插件,类似于yslow,让人感觉很意外,从图片上看,感觉不错:
Monster 是 Alipay UED 推出的网站代码分析、质量检测及评分的浏览器扩展,它能智能分析CSS、JS、HTML内容并生动形象展示网页得分情况(类似YSlow)。它是一个开源 项目,您可以在GoogleCode中心检出MonsterForChrome项目源代码。不久会推出Firefox版扩展。

Monster主要检测规则:
- 检测是否有重复ID的标签;
- 检测是否使用内联标签嵌套块级标签,如a嵌套div;
- 检测https协议页面,是否使用了http协议的图片、JS、CSS等;
- 检测compatMode、doctype是否出错;
- 检测是否使用了HTML5不再支持的标记,如font,s,u等;
- 检测标签是否正确关闭;
- 检测CSS、JS、background-image文件是否为404;
- 检测CSS、JS文件是否重复调用;
- 检测是否引用过多外部JS、CSS文件;
- 检测CSS、JS、HTML是否压缩;
- 检测CSS样式表是否使用了CSS expression;
- 检测Cookie是否超过30KB;
- 检测是否有form标签嵌套form标签;
- 检测是否直接在标签里定义JS事件,如<a href=http://www.google.org.cn/posts/”#” onclick=”…”>link</a>;
- 检测<meta charset=”utf-8″ />是否为<head>第一个子标签;
- 检测一个<form>标签内部是否出现二个input[type=submit]标签;
- 检测是否在<form>标签中使用了 id=”submit” 的标签;
- 检测是否将<style>块放置在</head>前面;
- 检测是否将<script>块放置在</body>前面;
- 检测<img>标签是否指定alt属性;
- 检测是否为input[text]指定label;
- 检测网页编码是否为gbk或utf-8;
- 检测是否使用了@import导入样式表;
- 如果CSS、JS指定 类似于“?t=20100405”时间戳,则自动输出最后修改时间,方便对比;
- 如果background-image超过6个,则提示所有背景图片及大小,超过30KB,标红显示;
Monster评分规则:
Monster是根据问题解决难易程度、性能提升程度、可用性提升程度以及维护性提升程度来综合评分的。具体,请下载 Monster评分算法.xls
下载Monster。
我没有试用过,不知道具体如何,我只能说,看上去真的很不错。而且,用上面的话来说,他们很快就会推出firefox版本,我又何必试呢?
Tags: chrome, yslow, firefox, monster, alipay
Software | 评论:2
| 阅读:25222
Submitted by gouki on 2010, April 29, 9:05 AM
Zend Studio 7.2 is Here!
PHP Troubleshooting Made Easy.
Save time and troubleshooting hassles with a better, faster way to diagnose and resolve PHP issues. Zend Studio's new integrated viewer opens code trace files captured by Zend Server in your production environment, so you can quickly pinpoint functional errors or performance slowdowns.
Why is this a big deal? Zend Studio 7.2 eliminates the tedious process of trying to reproduce the production environment and recreate problems, a challenge that is compounded when you can't access production servers.

说实话,我不是特别喜欢它,因为他太大了,但是他又是php集成的最好的一个IDE,而且可以很细的指定任意一个文件的编码,使得你在有多编码的环境下作业时,不用过多烦恼,其他的IDE都只能指定项目编码不能指定单独文件的编码。这个,我真的很喜欢。
PHP的debug功能,我就一直没有使用成功过,phped的,netbeans的,包括这个zde的,我就不多做解释了。好象zendstudio.net上面有教你怎么配置,反正我是一次没有成功过。郁闷,可能是人品不好?
Tags: zendstudio, zend, zendide, eclipse, ide
Software | 评论:3
| 阅读:22530