如何读取带有德语(欧洲)字符的 ansi 编码文件并正确显示
How to read an ansi-coded file with german (european) characters and display correctly
我有一个用 Windows 编辑器(或 Word)编写的标准文本文件,并以 ANSI 格式保存在 android 设备中。如果我打开并阅读此文件并将其显示在我的 Android 设备上,所有字符都会正确显示,但德语元音变音 äÄöÖüÜß 除外。黑色菱形内显示白色问号而不是这些字符。 (我使用 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();
}
}
}
}
评论的 BufferedReader
行看起来应该有效。但是,windows-1252
是 java.nio
中 类 的规范名称。对于 java.io
中的 类(如 InputStreamReader
),规范名称是 Cp1252
。参见 Supported Encodings
您也可以尝试 ISO-8859-1
(nio) 或 ISO8859_1
(io)。
我有一个用 Windows 编辑器(或 Word)编写的标准文本文件,并以 ANSI 格式保存在 android 设备中。如果我打开并阅读此文件并将其显示在我的 Android 设备上,所有字符都会正确显示,但德语元音变音 äÄöÖüÜß 除外。黑色菱形内显示白色问号而不是这些字符。 (我使用 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();
}
}
}
}
评论的 BufferedReader
行看起来应该有效。但是,windows-1252
是 java.nio
中 类 的规范名称。对于 java.io
中的 类(如 InputStreamReader
),规范名称是 Cp1252
。参见 Supported Encodings
您也可以尝试 ISO-8859-1
(nio) 或 ISO8859_1
(io)。