java - 如何读取非 ASCII 文件?

标签 java encoding

我有一个包含西里尔符号的 txt 文件。我是这样读的:

        String csvFile = "C:\\Users\\dolgopolov.a\\Desktop\\Список рассылки 14 07 2014.txt";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = "\t";

        try {

            br = new BufferedReader(new FileReader(csvFile));
            while ((line = br.readLine()) != null) {

                // use comma as separator
                String[] country = line.split(cvsSplitBy);

                System.out.println("Номер: " + country[0]
                        + " , Сообщение: " + country[1] + "");

            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

但是输出很奇怪:

Номер: 9047120386 , Сообщение: ��������� �������! �� ����� ����� ������� ������������� � ������� 2,98   ���., ������� ���������� �������� � ������� 3 ����

那么,我该如何避免呢?我是否必须更改编码类型或其他内容?

最佳答案

FileReader 使用默认编码,因此您必须使用 InputStreamReader

new InputStreamReader(new FileInputStream(filePath), 编码)

关于java - 如何读取非 ASCII 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037591/

相关文章:

Java 8 语法迭代并调用基于所有元素的否定谓词的方法?

java - 在Java中读取带有重音字符的文件

python - 如何使用Scrapy编码

java - 文件选择器:获取选定的后缀

java - 在 MyFaces (JSF) + Tomahawk 应用程序中引入 Ajax 支持

python - 转义 Django 模板中的特殊字符

ios - 多语言 NSString 的奇怪错误。可能是编码问题

http - 为什么 HTTP 响应负载在 Wireshark tcp 流中显示为乱码?

javascript - Spring 和 Angular - 非常简单的 REST 请求

java - 简单单元测试中的 URLUtil.isHttpsUrl() 错误返回值? (返回默认值=真)