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);
}
答案 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编码的吗?也许它的编码声明不正确。
或许真正的问题不在于你所展示的阅读代码,而在于你用来处理结果的代码。这些“混乱的角色”如何以及在何处显现?