doclib\hsp3utf.txt » Plain Format
------------------------------------------------------------------------------
HSP3UTF ver3.5 HSP : Hot Soup Processor
Users Manual copyright 2017 (c) onion software
------------------------------------------------------------------------------
・HSP3UTFとは
HSP3UTFは、HSP3の標準ランタイムをunicode(UTF-8)文字ベースで動作させるものです。
通常のHSP3ランタイムと同等の機能を持っていますが、文字列の扱いのみ
unicode(UTF-8)となっています。
SJISの文字コードを扱う標準のHSPでは表現できない文字を扱うことのできる
新しいHSP3として今後も進化を続ける予定です。
・HSP3Dishの使用方法
最初の行に、以下のコードを追加する必要があります。
#include "hsp3utf.as"
以降は、通常のHSP3スクリプトと同様にソースを記述することができます。
文字列の操作や扱いは通常と変わりませんが、noteload,notesave命令で
扱うテキストファイルはUTF-8のコードになります。
サンプルスクリプトが、sample/hsp3utfフォルダに含まれていますので、
参考にしてみてください。
・hspcmpによる変換
現在のバージョンでは、スクリプトエディタで編集する文字コードは
SJISになりますので、ソースコード自体をunicodeで記述することはできません。
ただし、独自のエディタでソースコードをUTF-8形式で記述し、
コマンドラインコンパイラ(hspcmp)でコンパイルすることで、
UTF-8形式によるソースの記述も可能になります。
コマンドラインから、
hspcmp -i script.hsp
のように実行することで、script.hspをUTF-8形式としてscript.axに変換します。
・新規に追加された命令
HSP3UTFランタイム使用時は、SJIS形式の文字列をサポートするために
いくつかの追加命令を使用することができます。
cnvatos(p1) ANSI文字列を通常文字列に変換
p1=変数 : 内容を読み出す元の変数名
変数に保存されたデータをANSI(ShiftJIS)文字列として読み取り、
通常の文字列に変換したものを返す関数です。
cnvstoa p1,"string" 通常文字列をANSI文字列に変換
p1=変数 : 結果を書き込む変数名
"string" : 変換元の文字列
"文字列"で指定されたデータをANSI(ShiftJIS)文字列に変換して
変数バッファに保存します。
p1で指定される変数には、あらかじめ文字列型として変換に
十分なバッファサイズを確保しておく必要があります。
これらの命令は、標準のHSP3ではエラーとなりますので注意してください。
・dll呼び出しについて
HSP3UTFランタイムから、dllを呼び出す際にstr,sptr形式で渡される文字列は、
通常のHSP3との互換性を考慮して、文字列がSJISコードで渡されます。
ただし、変数に格納されている文字列や、バッファ内の文字列は変換されませんので、
一部のプラグインやAPIにおいて、正しく文字コードが渡らない可能性がありますのでご注意ください。
あくまでも、HSP3UTFランタイムはUTF8形式を扱うシステムですので、
通常のHSP3と互換性が取れない場合があることに留意した上でご使用ください。
・今後の予定
HSP3UTFランタイムは、今後動作の安定を目指してテストを行ない
ゆくゆくはHSP3Dish,HGIMG4,HSP3_64,HSP3MTのランタイムを
UTF-8ベースに置き換えていくことを検討しています。
(HSP3Dishのandroid,iOS,emscripten上では既にUTF-8ベースで動作しています)
尚、通常版のHSP3,HGIMG3はそのままの文字コードで引き続き提供されます。
・謝辞
hsp3utfは、tds12さんが作成し公開されているものをベースに同梱させていただきました
tds12さん
https://twitter.com/lltds12
OpenHSP及びHSPTV!掲示板で多くの修正及び助言を頂いた皆様に感謝致します。
-------------------------------------------------------------------------------
HSP users manual / end of file
-------------------------------------------------------------------------------