使用 MIDP 通过 http 从服务器读取 UTF8 字符串
题
我想使用 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");
不隶属于 StackOverflow