UNICODEの一種、UTF-8形式のテキストファイルを、MI ザウルスで読めるShift-JIS形式に変換するプログラムです。
ファイル・アクセスが頻繁に発生する(その結果、遅い)など、あまりできがよくありませんので、非常時やプログラム開発の参考程度にお使いください。
KALOU8SJ.lzh (60KB) (LZH圧縮) - 8/20
※ 結構ファイルがかさばる(350ファイルほどあります)ので、コンピュータ上で解凍してからメモリカードにコピーすることをお勧めします。
[お断り]
このプログラムを使用したことで、どのような損害または障害が発生したとしても、作者は一切その責任を負いません。ご使用は、あくまで自己責任で行ってください。
--------
[改版履歴]
04.8.20
正式公開
■ファイルのコピー
ファイルを解凍すると、KALOU8SJ.BASというファイルとUTF8というディレクトリが展開されます。
UTF8ディレクトリは任意の場所に置くことができますが、プログラムの初期値はC1:のルート(C1:\UTF8\)となっています。特に問題がなければC1:のルートにコピーすると楽です。
KALOU8SJ.BASは、任意の場所にコピーできますが、通常はメインで使用しているメモリカードの944BASICディレクトリにコピーします。
■プログラムの修正
KALOU8SJ.BAS の
INFILE=''
の ' ' 内に、変換元のUTF-8形式のテキストファイルを指定します。ファイル名のみだと、KALOU8SJ.BASと同じディレクトリ内を探します。フルパス指定が確実です。
OUTFILE=''
の ' ' 内に、変換後のファイルを指定します。ファイル名のみだと、KALOU8SJ.BASと同じディレクトリ内にファイルを作成します。フルパス指定が確実です。
UTF8ディレクトリをC1:のルート以外にコピーした場合は、
UTF8='C1:\UTF8\'
をUTF8ディレクトリのフルパスに修正します(末尾には\が必須)。
・・・後は、実行するだけです。
■問題点
・元のテキストにない改行が入る
254バイト以上の行は、複数の行に分割されます。
これは時間やら技術やらが不足していて(有り体に言えば、調べている余裕がなくて)、9BのSAVETEXTでテキストファイルを保存しているためです。すいません。
・変換できない文字がある。
欧文特殊文字や一部の記号類は変換できない場合があります。
・なんで変換表のファイルがこんなに多いの?
9Bの仕様で、変数や配列はトータルで4096個までしか使えません。本来なら変換表を1つのファイルから読み込んで済ませたいところですがそうもいかず、コードを読み取り、その都度それに対応する変換表を読み込むという形にしています。
・変換表のデータに無駄が多すぎない?
無駄、多いです。UTF-8では、マルチバイト文字の2バイト目、3バイト目は 80〜BF と決まっているのですが、変換表のデータは 00〜FF を収められるようになっています。
コーディングとチェック作業が楽なこと、それにファイルサイズがたいして変わるわけでもないことから、もうこのまんまで出してしまえと・・・。
もう少し言えば、最初はUTF-8とUTF-16の違いをあまり知らず、UTF-16で変換表を作っていたという事情もあったりします(UTF-16の場合、00〜FFがまんべんなく使用される)。なので、UTF-16への転用は楽かもしれません。
・遅い
ごめんなさい。
やはり、9Bの変数仕様の問題とプログラム書きの腕のなさから、ファイル・アクセスが頻繁になっています。プログラムの方は、もっと最適化や効率化を図ることができるとは思いますが・・・。
根本的に、制限の多いBASICよりは、MOREで作ってもらえればよいのですが・・・。
■参考資料
UTF-8 の変換表については、http://ash.jp/に掲載されているものを元に作成しました。
■保証
まったく無保証です。テストもまるで十分とは言えません。自己責任でご利用を。
実験やサンプルの目的で作成しましたので、コードやデータの再利用はどしどし行っていただいて結構です。
−−−−
プログラムのロジック自体はひどく単純なので、応用は楽と思います。コメントも多めに入れておきました。
アサヒ・コムと日経BPのRSS/RDF、Niftyのココログを、PCからCFに保存したものでテストした限りでは一応変換できているようです。
また、標準のブラウザでココログのページを開き、範囲選択→コピー&ペーストでテキスト化したものを変換してみたのですが、これは失敗しました。
RSSリーダーとまではいかなくても、Cosmic Tripper等でRSSのtitleの中身だけを取得 → SJISに変換、とかできればよさそうなのですが。
* ご 注 意 *
このソフトウェアは9Bソフトです。
実行するには、MI-Zaurus に9BというMOREソフトをインストールしておく必要があります。
9B MOREのインストール方法、および9Bソフトのインストールと操作については、こちらをご覧ください。