【问题标题】:How do I read and write UTF-8 encoding from java assets folder? I have the code, but its not working. I get �D�nde est� / D�nde如何从 java assets 文件夹中读取和写入 UTF-8 编码?我有代码,但它不起作用。我得到“D�nde est”/D�nde
【发布时间】:2012-06-23 16:56:30
【问题描述】:
  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();
}

我使用assetManager 获取输入流,并将其作为指定UTF-8 编码的阅读器参数传递。 我也在用 UTF-8 编写器写入输出流文件路径

文件被读写,但编码仍然错误。我得到这样的字符: 在哪里...... =“D�nde est”/D�nde

我做错了什么?

【问题讨论】:

标签: utf-8 inputstream bufferedreader outputstream android-assets


【解决方案1】:

您确定输入文件是用 UTF-8 编码的吗?您在输出中看到的 � 是一个字符,用于替换读取时无法转换为字符的字节序列。

您可以制作二进制副本,而不是对文本进行解码和编码:

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);
}

【讨论】:

    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    相关资源
    最近更新 更多