« 再びVanessa Alvesの動画 | トップページ | IOC 鳥類リスト亜種ドラフト v3.0c »

2011/09/18

Refsort/Ruby 2.20 リリース

7月末に v2.16 をリリースして,もう直すところはほとんどない,などと傲慢なことを言っていると,痛いしっぺ返しが来ました.今回も,新しい辞書ファイルを準備していて思わぬバグに遭遇し,あわてて修正を施したものです.

今回の修正はかなり根本的な部分で,何と入出力のエンコーディングの方針の変更です.これまでは,内部エンコーディングはプラットフォームにとって最も自然な locale に従うようにしていて,それはある意味正しいのですが,Windows 環境では Unicode ではなく Windows-31J が locale として設定されており,それでは複数の言語をまとめて扱うときには無理が生じます.例えば,ドイツ語のウムラウトや,スペイン語やフランス語のアクセント符号など.これらを含む UTF-8 でエンコードされているファイルを読み込もうとしても,内部エンコーディングが Windows-31J では変換できない!というエラーになります.

従って,それまでの方針を大転換し,内部エンコーディングは辞書ファイルや入力のエンコーディングをそのまま使用することとしました.しかも,出力にも同じエンコーディングを使用することにしました.これで,UTF-8 で書かれたファイルをそのまま読み込み,処理ののち,UTF-8 で無理なく出力することが出来るようになりました.

ただし制約条件が一つあって,それは改行記号です.改行記号はプラットフォーム依存なので,入出力のエンコーディングを UTF-8 で行えたとしても,改行記号は CR+LF という Windows の標準のままです.逆に Unix では,Windows-31J のファイルを読み込み,処理の後に Windows-31J で書き出せたとしても,改行記号は LF です.読み込んだファイルの改行記号を分析して,それを使えばよいのですが,Ruby では標準の universal newline がかえってあだになり,この処理はそう簡単ではないと思われたので,今回は実装していません.

基本的には,プラットフォームに合ったエンコーディングが推奨されるのですが,しかし,多国語を使うときには Unicode は必須になってきているので,Windows 側の改革が望まれるところです.

| |

« 再びVanessa Alvesの動画 | トップページ | IOC 鳥類リスト亜種ドラフト v3.0c »

IT関連情報」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Refsort/Ruby 2.20 リリース:

» Refsort/Ruby 2.30 リリース [望湖庵日記 Lakeside Diary]
つい一週間前に修正版をリリースしたばかりの自作ソフト Refsort/Ruby ですが,昨日リリースした辞書ファイルを編集・チェックしている最中に,これまで潜んでいたバグを発見してしまいました. 今回のバグは,大昔に完成させたと思い込んでいた別名処理,特にその前処理の部分です.String#split などという基本的... [続きを読む]

受信: 2011/09/25 14:26

» Refsort/Ruby v2.40 Released [望湖庵日記 Lakeside Diary]
本日はクリスマスイブ.恒例の Ruby 最新版のリリースがあるはずなのですが,それにほんのわずか先だって Refsort/Ruby v2.40 をリリースします. 本版は,前々回の v2.20 のリリースのときに宿題になっていた,出力の改行コードを入力に合わせる に答えるものです.入力となる IO オブジェクトをバイナ... [続きを読む]

受信: 2011/12/24 08:15

» Refsort/Ruby v2.43 Released [望湖庵日記 Lakeside Diary]
Refsort/Ruby(例えば新しいほうから順番に *1 *2 *3 *4 *5 など)とは,辞書参照型ソーティングフィルタを Ruby スクリプトとして実装したもので,細々ながらも10年以上メンテナンスを続けているものです.辞書として,例えば生物を分類学上の順番に並べたものを用意すれば,入力された生物の種名を分類学... [続きを読む]

受信: 2012/08/12 13:37

« 再びVanessa Alvesの動画 | トップページ | IOC 鳥類リスト亜種ドラフト v3.0c »