What have you found for these years?

2009-07-17

ruby 支援 UAO !?

看了一下 buganini 的 bsdconv, 才發覺原來 Firefox 用的
big5 根本就不是正常(windows)的 big5 (CP950?) ?
無怪後來使用 Firefox 都可以看到 UAO 的字。
Mozilla 系列與 Big5 中文字碼

不過居然為此再自己做一種 big5, 覺得好像又有點太...
我不知道,對於編碼我並不是很熟悉,只是覺得
yet another big5, 是一件讓人覺得很麻煩很討厭的事。

心血來潮就想說 ruby 1.9 能不能內建這些編碼?
畢竟現在只有 CP950, 基本上很廢,至少也該要有 Big5-HKSCS...
所以就抓了 trunk 下來,自己 build 看看。發現其實還滿不錯的,
只要自己寫個 big5_uao.trans, 裡面會用到 big5_uao-tbl.rb,
這樣 ./configure 再 make, 就會自動產生相對應的 big5_uao.c,
最後 make install 就能看到多一個 Big5UAO 的編碼!
雖然怪怪的啦,被標上 dummy 我不知道為什麼 XD

但其實我覺得這流程很怪。如果我要加編碼,居然不能重 make,
要從 ./configure 開始... 然後 make 又一堆東西重 build.
覺得這點實在做得不是很方便,明明編碼就不需要弄這麼複雜。

不過在這篇 Yui(由衣? Yahoo UI? XD)的答覆:
More encoding (Big5 series) support?

看到他說不把擴充編碼弄得容易的原因,是希望聽到
feedback... XD 希望這不是懶惰的一種說詞啦 XD
總之聽到這樣的回答覺得還滿高興的就是了。

後來的回覆,老天我居然寫了不知道幾個小時!?
從昨天半夜一直寫到今天晚上,其實也沒寫很長...
一開始越寫越長,後來就開始刪刪減減,有些實在太廢話了一點。
又不是在聊天有些東西真的該拿掉避免模糊焦點...
然後編排順序也是一直在調整,拿上拿下的...

基本上應該盡量把重點往前面移,然後詳細的說明和附錄都放最後。
ptt 很多人問程式問題,都是先貼好幾頁的程式碼...............
然後最下面才開始文字敘述。這樣誰看得懂啊?
還不都嘛先翻到最後看文字,然後看需要什麼資訊再往上翻?
這樣順序完全不對了,何不一開始就把文字放最前面?

這點看國外 mailing list 感觸很深啊,大部份的編排都不錯...
講得非常清楚有重點,也有詳細的資料與說明。
然後再看看 ptt 那一堆口齒不清的人... orz
有時候真的會很想只丟「看不懂」三個字回去。
唉。
不過這又讓我想到,之前好像看到哪裡在說,
念拉丁文的一個好處是,能夠讓你把話說得非常清楚之類的... XD
其實寫程式也很像這樣哩。

p.s.
build readline extension 一直有問題,google 結果看起來都是
OS 10.5 的問題?好像也沒有人知道原因,都是用一些怪招繞過去...
有的甚至是叫你用不同 ruby 跑 config, 這樣的結果是:
segmentation fault, 因為版本差異。他們能動應該是因為版本接近。

而我最後的解決辦法就是假裝有某些功能,亂定義 macro 混過去。
這樣的結果是 readline 無法正常運作,不過至少可以跑 ruby 啦.. :s
不然根本 build 不起來。這點真的很怪,但也懶得追究了...

2 retries:

Buganini said...

Big5-HKSCS我更不敢碰,
因為它版本也不少而且還有互不相容的情形..
然後,libiconv支援的好像不是最新的版本。

Lin Jen-Shin (godfat) said...

這一系列東西上次跟人討論了很多,
大抵知道了 big5-hkscs 其實是 extension,
他可以架在任何的 big5 上,因此.. 當然更混亂 :s

另外 libiconv 上的 big5 似乎是不能用的,
記得是一個很怪異的版本..

我現在一時不知道連結放到哪裡了,
大抵上是在 libiconv 上的 mailing list,
作者也知道他納入的版本很有問題,
但因為都那麼久了,考量到相容問題,因此...

你有興趣的話,我可能要找一下當時的一堆連結
我後來本來也想寫一篇講這一堆 libiconv 和 libxml,
icu 的事情
不過放好久了遲遲沒有動工 :s

總之我的結論是..
就結果而言,ruby 裡的 big5-uao 應該是最好的吧 :s
libiconv 的 big5 全都不要碰,跟 windows 上的不相容
不然就要用 cp950, 但沒有 cp950-hkscs
bsdconv 我就不清楚了,沒試過..

Post a Comment

Note: Only a member of this blog may post a comment.



All texts are licensed under CC Attribution 3.0