将具有已知编码的文件转换为UTF-8

Jac*_*uer 4 java eclipse unicode encoding utf-8

我需要将文本文件转换为String,最后,我应该将其作为输入参数(类型为InputStream)放到IFile.create(Eclipse)中.寻找示例或如何做但仍然无法弄清楚...需要你的帮助!

只是为了测试,我尝试将原始文本文件转换为使用此代码编码的UTF-8

FileInputStream fis = new FileInputStream(FilePath);
InputStreamReader isr = new InputStreamReader(fis);

Reader in = new BufferedReader(isr);
StringBuffer buffer = new StringBuffer();

int ch;
while ((ch = in.read()) > -1) {
    buffer.append((char)ch);
}
in.close();


FileOutputStream fos = new FileOutputStream(FilePath+".test.txt");
Writer out = new OutputStreamWriter(fos, "UTF8");
out.write(buffer.toString());
out.close();
Run Code Online (Sandbox Code Playgroud)

但即使最终的*.test.txt文件有UTF-8编码,里面的字符也会被破坏.

Mat*_*all 9

您需要指定InputStreamReader使用Charset参数的编码.

                                    // ? whatever the input's encoding is
Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));
Run Code Online (Sandbox Code Playgroud)

这也有效:

InputStreamReader isr = new InputStreamReader(fis, "ISO-8859-1"));
Run Code Online (Sandbox Code Playgroud)

也可以看看:

搜索我找到所有这些链接的地方:https://stackoverflow.com/search?q = java + detect +encoding


您可以在运行时通过运行时获取默认字符集 - 它来自运行JVM的系统Charset.defaultCharset().

  • @Jack:嘿,我以为你说文件的编码是已知的.是什么赋予了?:P (2认同)
  • http://www.joelonsoftware.com/articles/Unicode.html,建议阅读,首先给自己! (2认同)