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

将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 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

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


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
?
呼唤远方

TA贡献1856条经验 获得超11个赞

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
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

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


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


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


}

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


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 5253 浏览

添加回答

举报

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