我想使用 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");

我打印字符及其代码以进行调试。我认为它在这里读取 ASCII 字符,因此,当我有一些字符的代码高于 127 时,我会得到两个字符,如下例所示:

字母 á。UTF 代码 E1(十六进制)。我先是195,然后是161

字母 ô。UTF 代码 F4(十六进制)。我先是195,然后是180

我的问题是,有没有办法让我直接读取UTF字符。我在网上找到了一些解决方案,但没有一个适合 MIDP。

有帮助吗?

解决方案

不读取字节,而是读取字符。使用 输入流读取器 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");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top