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 的字符时,我会得到两个字符,如下面的两个示例:

字母 á。UTF 代码 E1(十六进制)。我得到 195 然后 161

字母ô。UTF 代码 F4(十六进制)。我得到 195 然后 180

我的问题是,有没有办法让我直接读取 UTF 字符。我在网上找到了一些解决方案,但没有一个适合 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 回答