如何阅读带有德语(欧洲)字符的ansi编码文件并正确显示

时间:2017-04-15 17:55:55

标签: java android file encoding ansi

我有一个用Windows编辑器(或Word)编写的标准文本文件,并在android设备中以ANSI格式保存。如果我打开并阅读此文件并将其显示在我的Android设备上,除了德语UmlauteäÄöÖüÜß之外,所有字符都会正确显示。在黑色钻石中显示白色问号而不是这些字符。 (我使用remoteViews.setTextViewText(...

在主屏幕小部件中显示它们

我用谷歌搜索了几个小时,发现了很多关于使用UTF-8编码等的提示。但是当我用UTF-8或任何格式保存文件但是ANSI时,我会得到一个异常并且无法读取文件所有。使用android编辑器显示该文件的编码在ANSI和UTF-8中都是正确的。

我的程序太长了,无法复制到此处,因此我提取了希望相关的部分并将其放在下面。请帮忙!

public class Test {

    static void readFile() {
        File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "birthday.txt");
        if (file.exists())
        {
            try {
                FileReader fileReader = new FileReader(file);
                BufferedReader br = new BufferedReader(fileReader);
                //BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(directory+"birthday.txt"), "windows-1252"));

                String lineOfText;
                while ((lineOfText = br.readLine()) != null) {
                    //Output lineOfText  via remoteViews.setTextViewText(WidgetOutput.getRef(linecounter).getIdWhat(), lineOfText);

                }
                br.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

1 个答案:

答案 0 :(得分:0)

评论BufferedReader行似乎应该有效。但是,windows-1252java.nio中类的规范名称。对于java.io中的课程(如InputStreamReader),规范名称为Cp1252。见Supported Encodings

您可能还想尝试ISO-8859-1(nio)或ISO8859_1(io)。