如何在android中设置字符串字符编码

时间:2010-06-23 00:45:49

标签: java string character-encoding

HI!我有一个ISO-8859-2编码的网页内容。如何将此charset中编码的流转换为java的UTF-8。我正在尝试下面的代码,但它不起作用。它弄乱了一些角色。还有其他方法可以做到这一点吗?

    BufferedInputStream inp = new BufferedInputStream(in);
    byte[] buffer = new byte[8192];
    int len1 = 0;
    try{
        while ( (len1 = inp.read(buffer)) != -1 ) 
        {

            String buff = new String(buffer,0,len1,"ISO-8859-2");
            stranica.append(buff);
        } 

2 个答案:

答案 0 :(得分:4)

使用InputStreamReader和Charset尝试:

InputStreamReader inp = new InputStreamReader(in, Charset.forName("ISO-8859-2"));
BufferedReader rd = new BufferedReader(inp);
String l;
while ((l = rd.readLine()) != null) {
   ...
}

如果你得到一个UnsupportedCharsetException,就会知道你的问题是什么......另外,使用inp.getEncoding()你可以检查哪些编码真正被使用。

答案 1 :(得分:3)

  

如何转换编码的流   这个charset到java的UTF-8

错误的假设:Java在内部使用UTF-16,而不是UTF-8。

但是你的代码实际上看起来是正确的,应该可行。你绝对确定网页实际上是用ISO-8859-2编码的吗?也许它的编码声明不正确。

或许真正的问题不在于你所展示的阅读代码,而在于你用来处理结果的代码。这些“混乱的角色”如何以及在何处显现?