プログラミング講座(30) Small Basicのコード系
ところで、Small Basicの扱う文字コード系はUnicode (ユニコード、UTF-8)と呼ばれるものです。
作成中の囲碁プログラムの路数を変更して、他の囲碁プログラムの棋譜ファイルを読み込ませたところ、日本語が化けてしまうことが判りました。
そもそもSGFフォーマットで日本語のコード系が許されているのか理解できていないので、ここから先は不毛な話にもなりかねないのですが、Small Basicの入門という意味で話を続けます。
試した他の囲碁プログラムではシフトJISと呼ばれるコード系が使われていました。
なんとかシフトJISからUTF-8に変換できないか調べてみましたが、Text.GetSubText()でシフトJISの文字を取り出すと必ずFFFD(16進数)というコードが返るので、Small BasicではシフトJISの情報は失われ、読み込み不能であることが判りました。
したがって結論は、Small Basicのプログラムで日本語を扱うならUTF-8コード系に甘んじるしかないということです。
【表1 日本語コード例】
文字: 日本語
UTF-8: E6 97 A5 E6 9C AC E8 AA 9E
シフトJIS: 93 FA 96 7B 8C EA
(つづく)
« プログラミング講座(29) 人間対コンピューター囲碁対局 | トップページ | プログラミング講座(31) モンテカルロ法 »
コメント
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/21203/49231539
この記事へのトラックバック一覧です: プログラミング講座(30) Small Basicのコード系:
« プログラミング講座(29) 人間対コンピューター囲碁対局 | トップページ | プログラミング講座(31) モンテカルロ法 »




自己レスです。今作成中の囲碁プログラムはSGF (Smart Game Format)のバージョン1(FF[1])を使用しているのですが、バージョン4(FF[4})では、CA[]というプロパティがあって、CA[UTF-8]のように文字セットの指定ができるようになっていました。いずれFF[4]をサポートするように直してもいいかなと思っています。
投稿: のんき | 2010/09/05 16:56