5

Java MIDP を使用して、自分が管理しているサーバーから UTF-8 文字列を読み取りたいと考えています。私のサーバーは UTF-8 データを送信しています。次のコードに近づきます。

        c = (StreamConnection) Connector.open(
             myServer, Connector.READ_WRITE);
        InputStream is = c.openInputStream();
        StringBuffer sb = new StringBuffer();
        int ch;
        while((ch = is.read()) != -1)
            sb.append((char)ch + "->" + ch + "\n");

デバッグ目的で char とそのコードを出力します。ここではASCII文字を読み取っていると思うので、コードが127を超える文字があると、次の2つの例のように2つの文字が得られます。

文字á。UTF コード E1 (16 進数)。私は195を取得し、次に161を取得します

手紙 o. UTF コード F4 (16 進数)。私は195を取得し、次に180を取得します

私の質問は、UTF 文字を直接読み取る方法があるかどうかです。Web でいくつかの解決策を見つけましたが、MIDP に適合するものはありません。

4

1 に答える 1

10

バイトを読み取る代わりに、文字を読み取ります。InputStreamReader APIを使用してバイトを文字に変換し、UTF-8 エンコーダーを実行します。JavaME CLDC (JSR 30) プロファイルの一部としてサポートされる必要があります。それがリンク先です。

次のようなことを試してください:

c = (StreamConnection) Connector.open(
         myServer, Connector.READ_WRITE);
Reader r = new InputStreamReader(c.openInputStream(), "UTF-8");
StringBuffer sb = new StringBuffer();
int ch;
while((ch = r.read()) != -1)
    sb.append((char)ch + "->" + ch + "\n");
于 2009-07-08T03:55:32.640 に答える