Ruby 1.9の多言語化2009年02月08日 12:31

Rubyist Magazine 25号にRuby M17N の設計と実装という記事が出ています。1.8まではSJISやEUCやUTF-8が一応使えますよという程度だったRubyが1.9ではじめて導入した多言語対応の機構の解説です。

Unicodeを使ったUCS normalization方式が全盛を極める中、CSI方式を採用しているのが興味深いところです。

Ruby 1.9.1が対応しているかどうかは知りませんが、原理的にはEUC-JIS-2004やShift_JIS-2004をネイティブに (Unicodeとの変換でなく) 処理することも可能なはずです。

前のバージョン(1.8系列)からメソッドの挙動が非互換に変わっているものがあるのが気になりますが、この記事を読んだらRuby 1.9.1を使ってみたくなりました。

Python 2.4がJIS X 0213をサポート2005年05月22日 18:13

プログラミング言語Pythonはバージョン2.4からJIS X 0213を標準でサポートしています。codecで、EUC-JIS-2004, ISO-2022-JP-2004, Shift_JIS-2004が使用できます。

以前から、Pythonで日中韓の文字コードを扱うCJKCodecsというモジュールが 配布されていましたが、それがPython本体に取り込まれたということのようです。

これからプログラミングを始める方はPythonを試してみるのも良いかもしれま せんね。

例えば、下記のようなコードで、「EUC-JIS-2004で符号化されたファイルを1行ずつ読み込み、各行の先頭にビュレット(箇条書きの頭に打つ、中ぐらいの大きさの点)を付加し、Shift_JIS-2004に変換して出力する」といった処理が可能です。

#!/usr/local/bin/python
import sys, codecs

dec = codecs.lookup('euc-jis-2004')[1]

f1 = open(sys.argv[1], 'r')
f2 = open(sys.argv[2], 'w')
while 1:
	s = f1.readline()
	if not s:
		break
	unicode_obj = dec(s)[0]
	unicode_obj = u'\u2022' + unicode_obj
	f2.write(unicode_obj.encode('shift_jis-2004'))
f1.close
f2.close

なお、私はPythonはほとんど全く分からないので、上のコードは以下のページを参考にしました。