Java中的StringBuilder编码

3
我有一个方法可以从sd卡(Android)加载文件,然后使用StringBuilder读取它。 我要读取的文本是用我的母语字符编写的,例如ą ś ć ź ż...不幸的是,StringBuilder(或FileInputStream)无法正确读取它们。我该如何设置正确的编码?
以下是代码:
File file = new File(filePath);
            FileInputStream fis = null;
            StringBuilder builder = new StringBuilder();

            try {
                fis = new FileInputStream(file);
                int content;
                while ((content = fis.read()) != -1) {
                    builder.append((char) content);
                }

            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (fis != null)
                        fis.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            System.out.println("File Contents = " + builder.toString());
            contactService.updateContacts(builder.toString());
1个回答

8
例如,您可以尝试使用InputStreamReader结合BufferedReader,这应该可以解决问题:
InputStreamReader inputStreamReader = new InputStreamReader((InputStream)fis, "UTF-8");
BufferedReader br = new BufferedReader(inputStreamReader);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
    sb.append(line);
}                   

再见,Tom。

在这一行代码: BufferedReader br = new BufferedReader(inputStreamReader, "UTF-8"); 我收到了一个错误提示,说我应该删除“UTF-8”以匹配BufferedReader构造函数。 - filipp.kowalski
这是正确的:BufferedReader br = new BufferedReader(new InputStreamReader((InputStream)fis, "UTF-8")); - filipp.kowalski
好的!抱歉,我已经更正了。InputStreamReader 是用来设置编码的! - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接