Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将编码已知的文件转换为UTF-8_Java_Eclipse_Unicode_Encoding_Utf 8 - Fatal编程技术网

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

Java 将编码已知的文件转换为UTF-8,java,eclipse,unicode,encoding,utf-8,Java,Eclipse,Unicode,Encoding,Utf 8,我需要将文本文件转换为字符串,最后,我应该将该字符串作为输入参数(输入流类型)输入到IFile.create(Eclipse)。 寻找的例子或如何做到这一点,但仍然无法找出…需要你的帮助 为了进行测试,我尝试将原始文本文件转换为使用此代码编码的UTF-8 FileInputStream fis = new FileInputStream(FilePath); InputStreamReader isr = new InputStreamReader(fis); Reader in = new

我需要将文本文件转换为字符串,最后,我应该将该字符串作为输入参数(输入流类型)输入到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();

但即使最后的*.test.txt文件采用UTF-8编码,其中的字符也已损坏

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

                                    // ↓ whatever the input's encoding is
Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));
这也适用于:

InputStreamReader isr = new InputStreamReader(fis, "ISO-8859-1"));

另见:

  • -仅适用于UTF-8、UTF-16LE、UTF-16BE和UTF-32☹
  • ,免费java代码页检测
  • (Mozilla字符集检测器的Java端口)具有讽刺意味的是,该页面没有正确呈现“Mozilla’s”中的撇号
因此,请搜索我找到所有这些链接的位置:



在运行时,您可以通过
charset.defaultCharset()

顺便问一下,您正在编写Eclipse插件吗?为什么要使用IFile?是的,这是在Eclipse插件中!谢谢你的回复,但是我正在从isr(isr.getEncoding())获取编码,难道它还不知道编码是什么吗?我必须这样做对吗:InputStreamReader isr1=新的InputStreamReader(fis);Charset inputCharset=Charset.forName(isr1.getEncoding());InputStreamReader isr=新的InputStreamReader(fis,inputCharset))@杰克:不,不是这样的。真的没有办法知道任意文本块的编码。如果您尚未指定
InputStreamReader
的编码,则读取器将具有(因此
isr.getEncoding()
将返回)默认编码。@Jack:嘿,我以为您说过文件的编码是已知的。有什么好处P、 推荐阅读,首先给自己!