Android读取文件编码问题

时间:2011-03-28 09:45:54

标签: java android encoding

我正在尝试从SD卡读取文件,我被告知它采用unicode格式。但是,当我尝试读取文件时,我得到以下内容:

Encoded file

这是我用来读取文件的代码:

InputStreamReader fw = new InputStreamReader(new FileInputStream(root.getAbsolutePath()+"/Drive/sdk/cmd.62.out"), "UTF-8");
char[] buf = new char[255];     
fw.read(buf);
String readString = new String(buf);
Log.d("courierread",readString);    
fw.close();

如果我将该输出写入文件,这是我在十六进制编辑器中打开它时得到的结果: Hex info

有关正确阅读文件需要做些什么的想法?

2 个答案:

答案 0 :(得分:2)

文件是否有byte-order mark?在这种情况下,请查看Reading UTF-8 - BOM marker

编辑(来自评论):对我来说,这看起来像小端UTF-16。试试字符集“UTF-16LE”。

答案 1 :(得分:1)

您在十六进制编辑器中显示的文件是不是UTF-8编码,它看起来更像是UTF-16。这意味着您必须在代码中指定UTF-16作为编码(可能是UTF-16LE变体)。

如果是UTF-8编码,那么它只代表一个字节表示ASCII中可表示的所有字符。