« HSPTV!メルマガ 第41号 | メイン | 【講座】HSPよく使うフレーズ 第32回 スコア表示 »

2007年06月12日

【講座】HSP3ワンポイントテクニック 第22回

このコーナーでは、HSP3の変わった使用例や、気付きにくい機能
などを紹介していきたいと思います。

以前にも、Unicodeについての話題を出したことがありますが、
今回はさらに深く文字コードについて取り上げてみましょう。
と、言ってもあれこれ難しい呼び名や、歴史の話をしても眠く
なってしまうので、いきなり役立つスクリプトの実例をもとに
説明をしてみたいと思います。

文字コードの問題で一番困るのは、読めない文字を持った
データがやってくることです。言ってみれば、自分が読みたい
本が読めない国の言葉で書いてある…というような状態です。
これは、インターネット上のテキストデータを取得した時によく
起こります。以下のスクリプトは、YAHOO!のトップページに
表示されている内容(html)をファイルに保存するものです。

#include "hspinet.as"
netinit
if stat : dialog "ネット接続できません。" : end
neturl "http://www.yahoo.co.jp/"
netload "index.html"

ここで取得されたデータ(index.html)を、メモ帳などで開くと
日本語がよくわからない文字になっています。
各種文字コードに対応したエディタ(秀丸など)であれば、
正しく表示されますが、HSPも含めて通常は1つの文字コード
(シフトJIS)しか正しく表示されません。
外国語に色々な種類があるように、文字コードにも色々な
種類があり、インターネット上ではそれらが混在して使われて
いるのが現状です。
HSP3では、シフトJISがメインで、補助的にUnicode(UTF-16)
というコードを扱うことができますが、他にもEUCやJIS、
UTF-8など様々な種類が存在しています。先にサンプルを作成
したYAHOO!のページには、EUCが使われています。
それぞれの文字コードについて、細かい部分は省略しますが、
とにかく読める文字にしたくなる場面は少なくないと思います。
そこで、今回は文字コードの変換を行なうスクリプトも紹介
したいと思います。これを使えば、YAHOO!のページに含まれて
いる日本語も、HSPで正しく認識させることができるように
なります。
今回は、この変換のために「nkf32.dll」というDLLを使用する
ことにします。これは、文字コード変換を行なうライブラリ
として古くから多く使われているもので、使い方や、運用の
方法も手軽です。色々なバージョンが存在しますが、以下の
サイトにあるものを使用して作成しました。
http://www.vector.co.jp/authors/VA002133/

通常のプラグインと同様に、ランタイム(hsp3.exe)がある
フォルダに「nkf32.dll」をコピーして使用してください。

#uselib "nkf32.dll"
#func global SetNkfOption "SetNkfOption" sptr
#func global NkfConvert "NkfConvert" var,sptr

fname="index.html"
exist fname
sz=strsize
if sz<0 : dialog "ファイルがありません。" : end
notesel org
noteload fname

sdim cnv,sz*4 ; 変換後のバッファを十分に取る
opt="s" ; SHIFT-JISに変換する

SetNkfOption opt
NkfConvert cnv,org

notesel cnv
notesave "index_s.html"
mes "変換しました。"

このスクリプトは、EUCで書かれている「index.html」という
ファイルをシフトJIS(HSPで使用している形式)に変換して、
「index_s.html」というファイル名で保存します。
「nkf32.dll」自体は、SetNkfOptionという命令で変換の設定
(オプション)を指定した後、NkfConvert命令により変換を
実行するだけで処理は完了します。NkfConvert命令では、
変換先と変換元のバッファを指定する必要がありますが、
バッファの自動拡張は行なわないので、余裕のあるバッファを
確保する必要があるところだけ注意してください。
このDLLにより、様々な文字コードの相互変換を行なうことが
可能です。この例では、ネット上にあるEUCの文字コードを
シフトJISに変換していますが、逆にシフトJISをEUCに変換して
ネット上にftp経由でアップロードを行なうなどの応用も考え
られます。

(おにたま)

投稿者 usuaji : 2007年06月12日 04:05

口臭チェッカー市場