ホーム > デベロッパ > BREW FAQ

BREW FAQ : 文字列

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 文字列とワイド文字列を変換できます。

【 コード例 】

続きを読む »

      

文字列を描画するには?

文字列を描画するには、IDisplay インターフェイスの IDISPLAY_DrawText 関数を使用します。

SophiaFramework では、SFBDisplay::DrawTextSFXGraphics::DrawTextSFXGraphics::DrawString の各関数を使用します。

【 コード例 】

続きを読む »

      

文字列クラスとは?

文字列クラス とは、文字列操作を簡単に行うための 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