Java 将编码已知的文件转换为UTF-8
我需要将文本文件转换为字符串,最后,我应该将该字符串作为输入参数(输入流类型)输入到IFile.create(Eclipse)。 寻找的例子或如何做到这一点,但仍然无法找出…需要你的帮助 为了进行测试,我尝试将原始文本文件转换为使用此代码编码的UTF-8Java 将编码已知的文件转换为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
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、 推荐阅读,首先给自己!