« プログラミング講座(29) 人間対コンピューター囲碁対局 | トップページ | プログラミング講座(31) モンテカルロ法 »

2010/08/23

プログラミング講座(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) モンテカルロ法 »

Small Basic」カテゴリの記事

コメント

TechNet Wiki に Small Basic の文字セットに関する記事を書きました。(英語)

http://social.technet.microsoft.com/wiki/contents/articles/25196.small-basic-character-set-unicode.aspx

この記事を書きながら、Small Basic で扱えるのは BMP (U+0000~U+FFFF)の範囲のみと分かりました。

投稿: のんき | 2014/07/21 16:54

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

投稿: のんき | 2010/09/05 16:56

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: プログラミング講座(30) Small Basicのコード系:

« プログラミング講座(29) 人間対コンピューター囲碁対局 | トップページ | プログラミング講座(31) モンテカルロ法 »