【改版履歴】
◇文字コード特集の雑誌を読んだことはあるが、頭に入らない。VBScriptにはAsc関数、AscW関数、Chr関数、ChrW関数等がある。それとこの間、16進数を10進数に変換する
CLng("&H" & "16進数")という関数の応用方法を知った。以前、Excel VBAでCoderを作ったときは、変換データを付けていた。今回はVBScriptを使って、文字コード番号の相互変換をやってみようかと思い、「文字コードの変換方法」( http://www.cc.kurume-it.ac.jp/home/general/sibhome/moji/moji11.html )をガイドとしてやってみた。しかし、JISからShift_JISへの変換方法はあるが、その逆のサンプルは他のホームページにC言語やperl等で書いてあるものがあるだけのように見えた。そういうプログラムは読むこともできないから、256×256のマス目の表をExcelで作り、JISとShift_JISとEUCの漢字(第一水準のみ)に加えて、これに入れられるかどうかも分かっていない区点コードと8ビットASCII文字をむりやり書き込み、特に
《Shift_JIS → JIS》に焦点を当てて、例の試行錯誤をやってみた。表を作るのに数日を費したが、自分で書いてみるとぼんやりとながら見えてくる。変換方法について書いてある説明類の意味も分かるようになってきた。だが、第二水準以降にチャレンジするのは、まだしばらく先になりそうだ。表(
hexadecimal_table.lzh)もついでに載せておこう。(2007.11.4)◇JIS第2水準文字は3,990字程度である。下の表に若干付け加わるだけだということまで分かってきた。計算式が面倒にならなければありがたい。まずは表を埋めていかないと、理屈がまったく分からない。また、第2水準になると、EUCとコードの重複するところが出てくるように見える。この辺も確かめる必要がある。(11.6)◇JIS第2水準文字とそれに相当するShift_JIS、EUCのコード範囲をまとめてみた(表=
hexadecimal_table_2.lzh)。やはりShift_JISとEUCとで重複する部分が出てくる。文字コードは算出できたとしても、ここはベースコードの表示にならざるを得ない。変換式のアルゴリズムも「文字コードについて」(http://www.tohoho-web.com/wwwkanji.htm)に載っているが、やはり複雑そうである。(11.7)◇《disp_chrcode_1.vbs》(UpDate)、《Shift_JIS.vbs》だいぶ文字列処理スクリプトもたまってきたので、Shift-JIS漢字一覧について、文字の切り出し・結合などあれこれいじりながら、暇をみて少し手直しをした。第一水準文字については、ほぼ正確に表示できるようになったのではないかと思う。一文字ずつコードを表示するスクリプトを作り、MS-Excelにおいて
CODEおよび
DEC2HEX関数を使って求めたJIS16進数と照合しながら、異なる結果の出た文字について前に作った文字コード一覧表とさらに照合し、計算式を改善するというやり方である。手間がかかる上に、表の結果をどうすれば計算式に反映できるのかについて工夫している。まだ第二水準の文字について、結果のちゃんと出ないところがある。例によって参考資料を下に挙げておく。検証の過程でできたテキストファイル類である。また、VBScriptでShift-JISコードを連続して表示するスクリプトを作ったので、これも載せておく。(12.15)◇2回目の点検を行ってみたが、第二水準文字まで含めて、ほぼ変換できるように思うがどうだろうか。《JIS.vbs》何だかうまくできたように思えるので、ついでに一括してJIS16進コードに変換するスクリプトを作ってみた。(12.16)◇《JIS_code_conv.vbs》特に意味のないものともいえるが、文字を一括で変換できるフォームを作った。数値文字実体参照はUnicodeでないと意味がないので、このスクリプトは用途の乏しい物だと思う。(12.22)
【実行結果】
《disp_chrcode_1.vbs》
【参考画面】 各種文字コードを256×256の表に配置したもの。
Excelの表を1/10に縮小表示したものの画像である。
※ JIS第2水準レベルの文字について、他のコードを見ると、Shift_JISとEUCとで重複する部分が出てくる。
《Shift_JIS.vbs》
〔参考〕
Shift_JIS.vbsでコードを表示させた後でExcelに読み込む場合は、Eを"E"に置換しておかないと自動的に指数表示されてしまうので注意する。
Shift_JIS.txt
《JIS.vbs》
《EUC.vbs》
《Kuten_code.vbs》
《JIS_code_conv.vbs》