以utf8格式收到的字符串无法正确显示

时间:2010-05-10 04:34:47

标签: java utf-8

我想知道如何从Java中使用不同语言字母的文件中接收字符串。

我使用UTF-8格式。这可以正确接收一些语言字母,但拉丁字母无法正确显示。

那么,我怎样才能收到所有语言信件?

或者,是否有其他格式可以让我收到所有语言信件。

这是我的代码:

URL url = new URL("http://google.cm");

URLConnection urlc = url.openConnection();
BufferedReader buffer = new BufferedReader(new InputStreamReader(urlc.getInputStream(), "UTF-8")); 
StringBuilder builder = new StringBuilder(); 
int byteRead; 
while ((byteRead = buffer.read()) != -1)
{ 
    builder.append((char) byteRead);
} 

buffer.close();

text=builder.toString();

如果我显示“文字”,则字母无法正确显示。

1 个答案:

答案 0 :(得分:2)

在Java中读取UTF-8文件相当简单:

Reader r = new InputStreamReader(new FileInputStream(filename), "UTF-8"); 

如果这不起作用,则问题出在其他地方。

编辑:根据iconv,Google喀麦隆正在提供无效的UTF-8。它似乎实际上是iso-8859-1。

EDIT2:实际上,我错了。如果用户代理包含“Mozilla / 5.0”(或更高版本),但在(某些)其他情况下有效的iso-8859-1,它将服务(并声明)有效的UTF-8。显然,最好的办法是在解码前使用getContentType进行检查。