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にメソッドが追加されます
sjis2004の文字列をutf-8エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからutf-8に文字コードを変換した文字列オブジェクト
sjis2004の文字列をutf-16(Little Endian)エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからutf-16(Little Endian)に文字コードを変換した文字列オブジェクト
sjis2004の文字列をutf-16(Big Endian)エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからutf-16(Big Endian)に文字コードを変換した文字列オブジェクト
utf-8の文字列をsjis2004エンコーディングの文字列に変換します。
引数:なし
戻り値:オブジェクトからsjis2004に文字コードを変換した文字列オブジェクト
半角数字の面-区-点番号を"-"(ハイフン)で繋いだ文字列から、該当するsjis文字を返します。区、点番号は0 supressされていても、されていなくても構いません
(普通の人にはあまり役に立たないメソッドだと思います)
引数:なし
戻り値:面-区-点番号で指定された文字
例:
ch = "1-52-56".ku2sj p ch => "墮"
文字列の最初の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]"