使用MIDP通过http从服务器读取UTF8字符串

Ric*_*ras 5 java midp java-me

我想使用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");
Run Code Online (Sandbox Code Playgroud)

我打印char及其代码以进行调试.我认为这里是读取ASCII字符,因此,当我有一些代码大于127的字符时,我得到两个字符,如下面的两个例子:

信á.UTF代码E1(十六进制).我得到195然后是161

信ô.UTF代码F4(十六进制).我得到195然后是180

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

lav*_*nio 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");
Run Code Online (Sandbox Code Playgroud)