我想使用 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 http://java.sun.com/javame/reference/apis/jsr030/java/io/InputStreamReader.html#InputStreamReader(java.io.InputStream,%20java.lang.String)将字节转换为字符并通过 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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)