ブログランキング・にほんブログ村へ
PVアクセスランキング にほんブログ村
子豚のココのお勧め商品 - にほんブログ村

■おすすめの商品
防災グッズ
Evopow ポータブル電源 ソーラーパネル セット リン酸鉄リチウム 1024Wh 出力1000W (瞬間最大2000W)とソーラーパネル 100W ポータブルバッテリー 22% 純正弦波 車中泊 防災 キャンプ 家庭用 アウトドア用
最新記事
写真ギャラリー
検索
カテゴリアーカイブ
タグクラウド
最新コメント
リンク集
RSS取得

広告

posted by fanblog

2016年02月01日

【Delphi】漢字をカナ変換する方法「kakasi for win32」


既存のデータベースの顧客マスタや商品マスタなどに、
カナのフィールドが無かったりして、
急遽カナのフィールドが必要になることがあります。

しかし、何千、何万ものレコードが存在し、
手入力にて補うのが困難な場合、
名称フィールドを読み取って、
一括で自動変換してくれると助かります。

そんな時に便利なのが、「kakasi for Win32」。


kakasi for Win32


"KAKASI" という名称は、"kanji kana simple inverter" の略です。
また、東北大学(現: 京都大学)の佐藤雅彦先生によって開発された
SKK - simple kana kanji converter を逆から読んだものだそうです。
KAKASI の辞書のエントリのほとんどは SKK 辞書起源のものです。


KAKASI for Win32 は GPL2 に従っ たフリーソフトウェアです。

最新のkakasiは ココ から入手できます。

KAKASI に関する情報は ココ から入手できます。



kakasiをDelphiで利用するには



作成するソースは以下の通り。


※上記のようにソースを貼り付けたい場合は、
GitHub を利用してください。



これを適当なユニット名で保存し、
自分のプロジェクトに追加します。
今回は、u_kakasi.pas としました。

usesにu_kakasiを追加します。


後は、変換する箇所を記述。

ADOQry.FieldByName('カナ').AsString := ZenToHan(kakasi(ADOQry.FieldByName('名称').AsString, '-JK'));

全角カナに変換されるので、
これを以下の関数で半角カナに変換しています。





なお、kakasi を利用するには、
C:\kakasi\share\kakasi に「itaijidict」「kanwadict」を。
実行ファイルと同じフォルダに、「kakasi.dll」を配置しなければいけません。


kakasiの文字セットの変換指定オプション


a[jE]


E が指定されると JISx0208 の記号への変換になります。
それ以外のコードが指定されるか、
引数がないと変換しません。

-j[aE]


E が指定されると JISx0208 の記号への変換になります。

-k[ajKH]


aj を指定するとローマ字に変換します。
KH では JISx0208 のかたかなやひらがなに変換します。

-E[aj]


JISx0208 の記号を ASCII または JIS ROMAN にします。

-J[ajkHK]


まず辞書を引いて読み上げ、
aj が指定されるとローマ字に変換します。
k ではJISx0201のかたかなに、
H ではひらがなに、
K ではかたかなに変換します。

【変換例】
?@kakasi -JH
漢字をひらがなに変換します。

?Akakasi -Hk -Kk -Jk -Ea
すべての JISx0208 で定義された文字を変換します。

?Bkakasi -aE -jE -gE -kK
すべての文字を JISx0208 の文字に変換します。

?Ckakasi -Ha -Ka -Ja -Ea -ka
ローマ字変換

?Dkakasi -HK -KH
かたかなとひらがなを交換

※詳しくは、kakasi.sjisを参照してください。



<<< ライブラリについて >>>


「README-ja.win32」には、

「このアーカイブには Win32 向けの dynamic link library と static link library
を同梱してあります。
VC++6.0 で compile した dynamic link library は
lib\kakasi.dll と lib\kakasi.lib
です。
VC++6.0 で compile した static link library は
lib\libkakasi.lib
です。
mingw32 の gcc-2.95 で compile した static link library は
lib\libkakasi.a と lib\libkakasi.la
です。
include file は共通で
include\libkakasi.h
です。」
とありますので、VC++等ではDLL無しにできると思います。

Delphiの場合は難しいと思うので、
実行ファイル(EXE)と同じフォルダに置くようしましょう。



超便利!ブログにソースコードを掲載する

posted by 子豚のココ at 17:29 | Comment(0) | TrackBack(0) | Delphi
この記事へのコメント
コメントを書く

お名前: 必須項目

メールアドレス: 必須項目


ホームページアドレス: 必須項目

コメント:

認証コード: 必須項目

※画像の中の文字を半角で入力してください。

この記事へのトラックバックURL
https://fanblogs.jp/tb/4686570

この記事へのトラックバック
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: