3

我有一个从 sdcard (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());
4

1 回答 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);
}                   

久违了,汤姆

于 2013-07-26T11:30:26.090 回答