こんにちわ。
>さかさん
HSP側で文字表示が早くできるといいですよね。
ねこずきさんが作られようとしているのは漢字表示ができるモジュールのようです。
>ねこずきさん
こんにちわ。私の掲示板ではどうもです。
私は実機でチョコチョコと文字コード(UTF8)をコツコツ調べていったのですが、全部完成してから気づいたのですが、Web上でUTF8コードを調べればよかったと後悔しました。
でも自分で調べたことによって表示に必要な開始コードが分ったりしました。
で、どうやって "あ" 等の文字を取得しているかというと、
まず(*1)のサイトを見てみると、「E×」が「3バイト文字の開始バイト(漢字はおおむねこれで開始)」となっております。
次に(*2)と(*3)のサイトを見ると、例えば "あ" のコードを見ると、16進数表記で「E38182」となっております。(10進数だと:227(E3), 129(81), 130(82))
また、アルファベットの "A" のコードを見ると、16進数表記で「EFBCA1」となっております。(10進数だと:239(EF), 188(BC), 161(A1))
mod_picmesの場合は、半角全角の「英数字/記号/ひらがな/カタカナ」しか使用しません。ここで何が言いたいかというと、「英数字/記号/ひらがな/カタカナ」のUTF8コードは、1バイト目が「227」もしくは「239」になります。これは上記で言っている開始の「E×」のことです。この値をpeek関数で1バイト目を取得し、合致していれば続けて2バイト目3バイト目と取得していきます。
3バイト目まで取得し、自前で用意しているテーブルを使用して文字を表示しています。
ただし、注意することがあります。
必ずしも全ての文字が3バイトになるわけではありません。
例えばアスキーコード(半角の英数字記号)はAndroid上でも1バイトです。
また、全角文字でも2バイトなどがあります。
カタカナに関しては特殊で、例えば半角で「パ」をWindows上だと2文字ですが、Android(UTF8?)上だと1文字扱いになります。つまり全角の「パ」と同じということです。UTF8コードも「パ」も「パ」も同じになります。
なので、Windows上とAndoird上とで処理を分けてあげると良いかと思います。
(*1)
UTF-8コード表(1)
http://www.seiai.ed.jp/sys/text/java/utf8table.html
(*2)
UTF-8コード表(2)
http://www.seiai.ed.jp/sys/text/java/utf8table2.html
(*3)
Unicode対応 文字コード表
http://ash.jp/code/unitbl21.htm
参考になるか分りませんが、以下のソースをAndroidで実行すると結果は次のようになります。
len = 3
peek = 227, 129, 130
wpeek= 33251, 227, 129, 130
lpeek= 8552931, 227, 129, 130
#include "hsp3dish.as"
moji = "あ"
slen = strlen(moji)
redraw 0
color 0, 0, 0 : boxf
color 255, 255, 255
code_pk1 = peek(moji, 0)
code_pk2 = peek(moji, 1)
code_pk3 = peek(moji, 2)
code_wpk0 = wpeek(moji, 0)
code_wpk1 = wpeek(moji, 0) & 0xFF
code_wpk2 = wpeek(moji, 1) & 0xFF
code_wpk3 = wpeek(moji, 2) & 0xFF
code_lpk0 = lpeek(moji, 0)
code_lpk1 = lpeek(moji, 0) & 0xFF
code_lpk2 = lpeek(moji, 1) & 0xFF
code_lpk3 = lpeek(moji, 2) & 0xFF
mes "len = " + slen
mes "peek = " + code_pk1 + ", " + code_pk2 + ", " + code_pk3
mes "wpeek= " + code_wpk0 + ", " + code_wpk1 + ", " + code_wpk2 + ", " + code_wpk3
mes "lpeek= " + code_lpk0 + ", " + code_lpk1 + ", " + code_lpk2 + ", " + code_lpk3
redraw 1
stop
Windows上でAndroidのアプリを起動できるエミュレーターも複数存在しているようなので、そちらを試してみるのはいかがでしょうか?