HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1221
やまhsp3dishで全角文字のstrsizeを取得すると2解決


やま

リンク

2013/12/21(Sat) 18:56:03|NO.58828

全角文字のサイズを調べるときに、


#include "hsp3dish.as" sdim moji moji(0) = "あ" moji(1) = "ああ" moji(2) = "あああ" moji(3) = "ああああ" moji(4) = "あああああ" moji(5) = "ああああああ" redraw 0 repeat 6,0 getstr a,moji(cnt) mes strsize loop redraw 1

上のようなスクリプトを実行すると

PCでは予想通り
2
4
6
8
10
12
と表示されたのですが、androidで実行してみると
4
6
10
12
16
18
と表示されます。
なぜPCとandroidで違う結果になるのかがわかりません。

回答よろしくお願いします。



この記事に返信する


しまくろねこ

リンク

2013/12/21(Sat) 23:48:53|NO.58833

こんにちわ。

Android上では文字コードがUTF-8で処理されています。
HSP3Dish Helperでビルド時にUTF-8化(外部ファイルは除く)されるため、ソース内のダブルコーテーションで括られた文字列は

半角数値/アルファベット/記号 … 1バイト
半角カナ … 強制的に全角カナに置き換えられている?で、3バイト
全角ひらがな/漢字 … 3バイト
一部の全角特殊記号 … 2バイト

となったはずです。
資料を作ったPCとは別のPCで書いてますので間違っていたらごめんなさい。

Android上だと文字列の扱いがWindows上とは勝手が違ってくるので、すこし面倒です。
もともと自分用にではありますが、自作サイトにてHSP3DishからAndroid上での文字列を扱うためのモジュール「mod_dstr.as」というものを作りました。



やま

リンク

2013/12/22(Sun) 02:35:30|NO.58834

文字コードが違うんですね!
初めて知りました。

しまくろねこさんのモジュールは、一応ちゃんと勉強してから使わせていただきます。

ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.