2009-07-08 60 views
5

我想从使用java MIDP控制的服务器读取UTF-8字符串。 我的服务器正在发送UTF-8数据。 下面的代码靠拢:使用MIDP从服务器通过http读取UTF8字符串

 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,那么我得到两个字符,如下面的两个例子:

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

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

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

回答

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"); 
+0

恰到好处。谢谢! – 2009-07-08 10:33:08

相关问题