我正在尝试从SD卡读取文件,我被告知它采用unicode格式。但是,当我尝试读取文件时,我得到以下内容:
这是我用来读取文件的代码:
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();
如果我将该输出写入文件,这是我在十六进制编辑器中打开它时得到的结果:
有关正确阅读文件需要做些什么的想法?
答案 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中可表示的所有字符。