如何从java资产文件夹读取和写入UTF-8编码?我有密码,但不起作用。我得到;D和xffd;nde est;/D和xffd;无损检测
我使用assetManager获取inputstream,并使用指定的UTF-8编码将其作为reader的参数传递。 我还使用UTF-8中的writer编写outputstream文件路径 文件已读写,但编码仍然错误。我有这样的角色: 你在哪里�D�无损检测� / D�无损检测如何从java资产文件夹读取和写入UTF-8编码?我有密码,但不起作用。我得到;D和xffd;nde est;/D和xffd;无损检测,utf-8,inputstream,bufferedreader,outputstream,android-assets,Utf 8,Inputstream,Bufferedreader,Outputstream,Android Assets,我使用assetManager获取inputstream,并使用指定的UTF-8编码将其作为reader的参数传递。 我还使用UTF-8中的writer编写outputstream文件路径 文件已读写,但编码仍然错误。我有这样的角色: 你在哪里�D�无损检测� / D�无损检测 我做错了什么?您确定输入文件是用UTF-8编码的吗?这个� 您可以在输出中看到一个字符,用于替换读取时无法转换为字符的字节序列 您可以制作二进制副本,而不是对文本进行解码和编码: private void CopyA
我做错了什么?您确定输入文件是用UTF-8编码的吗?这个� 您可以在输出中看到一个字符,用于替换读取时无法转换为字符的字节序列 您可以制作二进制副本,而不是对文本进行解码和编码:
private void CopyAssets2() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("File Error", e.getMessage());
}
for (String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
out = new FileOutputStream("/sdcard/Translate/" + filename);
copyFile2(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (Exception e) {
Log.e("Save Error", e.getMessage());
}
}
}
private void copyFile2(InputStream in, OutputStream out)
throws IOException {
char[] buffer = new char[1024];
Reader reader = new BufferedReader( new InputStreamReader(in, "UTF-8"));
Writer writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
int read;
while ((read = reader.read(buffer)) != -1) {
writer.write(buffer, 0, read);
}
reader.close();
writer.flush();
writer.close();
}
在此为您提供了解决方案[UTF-8格式读取文本文件][1][1]:
byte[] buffer = new byte[1024];
InputStream reader = new BufferedInputStream(in);
OutputStream writer = new BufferedOutputStream(out);
int read;
while ((read = reader.read(buffer)) != -1) {
writer.write(buffer, 0, read);
}