AECHAR とは?
AECHAR とは、日本語などの "ワイド文字"を格納するための型です。
AECHAR は " AEEStdDef.h" ヘッダーファイル のなかで
typedef uint16 AECHAR;
で定義される符号無しの16ビット整数( 2 バイト文字 )です。
使われる 2 バイト文字のコードは、 日本では S-JIS、米国では ISOLATIN1、韓国では KSC901 など BREW 端末によって異なります。
BREW では、 char 型の 1 バイト文字も利用できます。
テキストを画面に描画する IDISPLAY_DrawText() 関数は、AECHAR 型の文字列を引数として受け取ります。
そのため、文字列を画面に表示する際、STREXPAND() ヘルパー関数を使って 1 バイト文字と 2 バイト文字が混在する char 文字列は AECHAR 文字列に変換する必要があります。
逆に、AECHAR 文字列を char 文字列に変換するには、 WSTRCOMPRESS() ヘルパー関数を使います。
ワイド文字とは?
ワイド文字とは、AECHAR 型の文字のことです。
AECHAR 型の内部エンコードは?
AECHAR 型は 16 ビット符号なしの整数型です。
日本の端末の文字エンコードは Shift-JIS です。
米国では ISOLATIN1、韓国では KSC901 など BREW 端末によって異なります。
char 文字列とワイド文字列を変換するには?
char 文字列とワイド文字列を変換するには、STREXPAND 関数や WSTRCOMPRESS 関数を使用します。
SophiaFramework では、 SFXAnsiString クラスや SFXWideString クラスのコンストラクタを使用して、char 文字列とワイド文字列を変換できます。
【 コード例 】
続きを読む »
文字列クラスとは?
文字列クラス とは、文字列操作を簡単に行うための C++ クラスです。
BREW API を使用した C 言語プログラミングでは、このようなクラスが存在しないため、開発者は文字列ポインタを直接操作する必要があります。
SophiaFramework には、char 文字列を扱う SFXAnsiString クラスと、BREW のワイド文字列を扱う SFXWideString クラスが用意されています。
SophiaFramework の文字列クラスを使用すると、以下のような操作を簡単に行うことができます。
【 コード例 】
続きを読む »
WSTRTOUTF8 関数で、ワイド文字列が UTF-8 に変換されないのですが … ?
WSTRTOUTF8 関数は、ワイド文字列ではなく UTF-16 を UTF-8 に変換します。
なお、UTF8TOWSTR は、 UTF-8 をワイド文字列ではなく UTF-16 に変換する関数です。
リソースエディタから「文字列」を読み取るには?
BREW のリソースファイルから文字列を読み込むには、 ISHELL_LoadResString() 関数を使用します。
また、文字列を読み込むために必要となるヒープのサイズは ISHELL_GetResSize() 関数で計算できます。
uint32 size;
AECHAR* buffer;
ISHELL_GetResSize(shell, "myres.bar", 128, RESTYPE_STRING, &size);
if ((buffer = MALLOC(size)) != NULL) {
ISHELL_LoadResString(shell, "myres.bar", 128, buffer, size);
.. 文字列を利用
FREE(buffer);
}
以上のようなコードで文字列を利用することが可能となります(細かいエラー処理は記述されていません)。
また、リソースファイルを作成する場合は、BREW リソースエディタで文字列リソースを作成し、文字エンコーディングを S-JIS に設定してください。
絵文字を入力禁止にできますか?
現在 BREW で使用可能な入力モードが下記設定しかありませんので、絵文字だけを排除することはできないかと思われます。
#define AEE_TM_NONE 0x0000
#define AEE_TM_CURRENT 0x0001
#define AEE_TM_SYMBOLS 0x0002
#define AEE_TM_LETTERS 0x0003
#define AEE_TM_RAPID 0x0004
#define AEE_TM_NUMBERS 0x0005
#define AEE_TM_KANJI 0x0006 // Japanese Input
#define AEE_TM_HANKAKU_KANA 0x0007 // Japanese Input
#define AEE_TM_HANGUL 0x0008 // Korean Input
#define AEE_TM_PINYIN 0x0009 // Chinese Input
#define AEE_TM_STROKE 0x000A // Chinese Input
#define AEE_TM_EZTEXT 0x000B // Zi's Predictive Entry
#define AEE_TM_T9 0x000C // Tegic's Predictive Entry
AEE_TM_KANJI はひらがなもカタカナも2バイト文字の入力モードと考えられ、絵文字もそれに含まれるはずです。
解決法として、絵文字を入力時に排除するのではなくて、入力が終わったあとに、絵文字の部分だけ文字列から削除する方法があります。
絵文字一覧は、KDDI のサイトからダウンロード可能です。
http://www.au.kddi.com/ezfactory/tec/spec/3.html