SourceForge.jp

sconv

 sconvはrubyのString Classにメソッドを追加する拡張ライブラリです。
shift jis x0213:2004とunicodeの相互変換をサポートします。

本ライブラリを書くことでunicodeのイロイロが解ってきたので、別ページに解説をまとめます。

ダウンロード〜インストール

 本ライブラリは、良くも悪くもC言語によるrubyの拡張ライブラリです。コンパイル、インストールにはある程度rubyの知識が必要ですが、当面ここでは、その説明は行いません。

 いずれ、ソースはtarballで固めてリリースに置きますが、今しばらくはSubversionのリポジトリから取得して下さい。
ソースを取得したら、extconf.rbを実行し、Makefileを作り、コンパイルします。
コンパイルは、gcc 4(Mac OS X)、mingw32(Win XP)で確認しています。他の環境は確認が出来ないので、コンパイルできないときは、別途ご相談下さい。
 コンパイルが終われば、make installでOKです。

使い方

 まずは、

require "sconv"
してください。 String Classにメソッドが追加されます
 今のところ、使えるメソッドは6つで、それぞれ、sj2utf8,sj2utf16le,sj2utf16be,utf82sj,ku2sj,sj2kuです。 以下で、それぞれの使い方を説明します。

sj2utf8

 sjis2004の文字列をutf-8エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからutf-8に文字コードを変換した文字列オブジェクト

sj2utf16le

 sjis2004の文字列をutf-16(Little Endian)エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからutf-16(Little Endian)に文字コードを変換した文字列オブジェクト

sj2utf16be

 sjis2004の文字列をutf-16(Big Endian)エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからutf-16(Big Endian)に文字コードを変換した文字列オブジェクト

utf82sj

 utf-8の文字列をsjis2004エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからsjis2004に文字コードを変換した文字列オブジェクト

ku2sj

 半角数字の面-区-点番号を"-"(ハイフン)で繋いだ文字列から、該当するsjis文字を返します。区、点番号は0 supressされていても、されていなくても構いません
(普通の人にはあまり役に立たないメソッドだと思います)
引数:なし
戻り値:面-区-点番号で指定された文字
例:

ch = "1-52-56".ku2sj
p ch
 => "墮"

sj2ku

 文字列の最初の1文字の面-区-点番号、漢字水準番号を、Fixnumの配列で返します。
最初の1文字が1バイト文字の場合は全てが0の配列を返します。また、非漢字であった場合は面-区-点番号はその文字の番号を、漢字水準は0を返します。
(これも普通の人にはあまり役に立たないメソッドだと思います)
引数:なし
戻り値: 面番号、区番号、点番号、漢字水準番号 の配列
但し、対象が非漢字の場合は漢字水準番号は0を返す。
更に、対象非漢字が、JISX0213にあり、JISX208に無い場合は-1を返す。(-1水準なんてものは無いですが、X0208外字判別の為の便宜上こうしました)
例:

kanjiinfo = "村墮羿瘜".sj2ku
p kanjiinfo
 =>"[1,34,28,1]"

又は
require "jcode"
"村墮羿瘜".each_char do |ch|
	kinfo = ch.sj2ku
	p kinfo
end
 => "[1,34,28,1]"
"[1,52,56,2]"
"[1,90,29,3]"
"[2,81,64,4]"