为了账号安全,请及时绑定邮箱和手机立即绑定

将InputStream读取为UTF-8

/ 猿问

将InputStream读取为UTF-8

皈依舞 2019-10-18 14:49:04

我正在尝试text/plain逐行从Internet 上读取文件。我现在拥有的代码是:


URL url = new URL("http://kuehldesign.net/test.txt");

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

LinkedList<String> lines = new LinkedList();

String readLine;


while ((readLine = in.readLine()) != null) {

    lines.add(readLine);

}


for (String line : lines) {

    out.println("> " + line);

}

我正在使用文件test.txt包含¡Hélló!,以测试编码。


当我查看OutputStream(out)时,看到的是> ¬°H√©ll√≥!。我不相信这是有问题的,OutputStream因为我可以做到out.println("é");没有问题。


对于InputStream作为UTF-8的阅读形式有什么想法吗?谢谢!


查看完整描述

3 回答

?
暮色呼如

解决了我自己的问题。这行:


BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

需要是:


BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

或从Java 7开始:


BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));


查看完整回答
反对 回复 2019-10-18
?
呼唤远方

String file = "";


try {


    InputStream is = new FileInputStream(filename);

    String UTF8 = "utf8";

    int BUFFER_SIZE = 8192;


    BufferedReader br = new BufferedReader(new InputStreamReader(is,

            UTF8), BUFFER_SIZE);

    String str;

    while ((str = br.readLine()) != null) {

        file += str;

    }

} catch (Exception e) {


}

尝试这个,.. :-)


查看完整回答
反对 回复 2019-10-18
?
慕仰0522570

每当发现一个特殊字符将其标记为^时,我都会遇到相同的问题。为了解决这个问题,我尝试使用以下编码:ISO-8859-1


BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));


while ((line = br.readLine()) != null) {


}

我希望这可以对任何看到此帖子的人有所帮助。


查看完整回答
反对 回复 2019-10-18

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信