Android - 写入/读取文件的编码

时间:2013-04-12 06:32:35

标签: java android string file encoding

我有一个字符串,其中包含加密的2字节(16位)ASCII字符。 然后我用以下代码将其写入文件:

String result = encrypt("text"); //some encryption method
FileOutputStream fos = new FileOutputStream(filename);
fos.write(result.getBytes("ISO-8859-15"));
fos.flush();
fos.close();

问题是当我读取文件时,字符串值已经不​​同了。 下面是我用来读取文件的代码:

InputStream inputStream = new FileInputStream(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "ISO-8859-15"));
String line;
String txt = "";
while ((line = br.readLine()) != null) txt = txt + line;

我发现String txt已经与String结果不同了。我甚至提出了一种方法来对字符串中所有字符的ASCII求和,并发现它不同。 我不知道我的错误是什么。请帮忙。

1 个答案:

答案 0 :(得分:1)

如果您已对其进行加密,则不希望将其作为字符串写出并应用编码。我所知道的每种加密方法都将数据视为一个字节数组。您需要在加密之前和解密之后进行任何字符集转换。在Java中,您甚至不应该将加密后数据保存为字符串,它应该是一个字节数组。

此外,没有16位ASCII这样的东西。 ASCII是8位。你正在使用某种宽字符数据或16位unicode,而不是ascii。 http://en.wikipedia.org/wiki/ASCII