Monday, May 26

Ruby的UTF8

做了几天ruby的程序,关于日语和汉语的乱码问题做了一点研究
yaml文件可以是UTF8格式,ruby可以正常读取,但是记得一定是不带signature的UTF8格式
我使用的emeditor编辑器可以保存文件的时候选择这种UTF8 without signature的编码方式。

做ruby和ror程序,包括cygwin的gcc程序的最佳工具就是netbeans,现在最新版本是6.1
在netbeans的output窗口输出的文字也总是乱码,这时候需要手动修改在netbeans安装目录下的\etc\netbeans.conf 这一配置文件。在netbeans_default_options=”….的最后,引号之前空一个格,然后键入-J-Dfile.encoding=UTF-8
保存netbeans.conf,在windows2008里这个目录有权限保护,需要改安全属性,才能保存成功。
重启netbeans应该可以解决output乱码的问题了。

在windows的console窗口显示UTF8,也是一个问题。
据说 chcp 65001 这个命令可以改变console的编码格式,值得一试
另外的办法就是安装cygwin UTF8, 使用cygwin代替一般的cmd console
cygwin UTF8在这里:http://www.okisoft.co.jp/esc/cygwin-20.html
我没有装,因为我在windows2008安装的cygwin出现了问题,如下,百思不得其解

Huh? No /etc/fstab file? Using default root and cygdrive prefix...
bash: /usr/bin/tr: No such file or directory
bash: /usr/bin/sed: No such file or directory
$
根据http://cygwin.com/ml/cygwin-apps/2008-05/msg00180.html
知道/etc/fstab 找不到是目前的cygwin的一个BUG,应该可以很快改好。
目前可以在安装cygwin时选择 Prev 也就是前一个版本。

通过安装UTF-8 Cygwin是可以显示日文和中文的。
下载修改过的cygwin1.dll
http://www.okisoft.co.jp/esc/utf8-cygwin/cygwin1-dll-20-04-21.tar.bz2
解压缩以后置换掉cygwin/bin下的同名文件。
然后修改home/yourname/下的.bashrc和.inputrc文件
将下面两个文件下载,将其内容拷贝到对应文件的最后。注意不要直接置换对应的文件。
http://www.okisoft.co.jp/esc/utf8-cygwin/.bashrc
http://www.okisoft.co.jp/esc/utf8-cygwin/.inputrc

修改适当的字体,你可以用cat看到用UTF8 without signature编码的文件内容。
如果一个rb文件类似

$KCODE='u'
p '日本語は大丈夫ですか'
p '汉语也没问题吗!'

仍然在console上输出乱码



实在没有办法只有
开一个cygwin然后输入

tail -f log.txt

然后在另一个cygwin里面打log出来
ruby -Ku test.rb >> log.txt