Java字符转换为UTF-8

时间:2010-12-22 17:59:11

标签: java

我正在使用:

InputStreamReader isr = new InputStreamReader(fis, "UTF8");

从文本文件中读取字符并将其转换为UTF8字符。

我的问题是,如果被读取的一个字符无法转换为utf8,会发生什么?会有例外吗?或者会让角色掉线?

2 个答案:

答案 0 :(得分:7)

您没有从一个字符集转换为另一个字符集。您只是指示该文件是UTF 8编码的,以便您可以正确读取它。

如果您想从1编码转换为另一种编码,那么您应该执行以下操作

File infile = new File("x-utf8.txt");
File outfile = new File("x-utf16.txt");

String fromEncoding="UTF-8";
String toEncoding="UTF-16";

Reader in = new InputStreamReader(new FileInputStream(infile), fromEncoding);
Writer out = new OutputStreamWriter(new FileOutputStream(outfile), toEncoding);

在完成David Gelhar的回复后,我觉得这段代码可以改进一下。如果你不知道“inFile”的编码,那么使用GuessEncoding库检测编码,然后用检测到的编码构建阅读器。

答案 1 :(得分:3)

如果输入文件包含无效的字节utf-8,则read()将默认使用U + FFFD(十进制65533; Unicode "replacement character")替换无效字符。

如果您需要更好地控制此行为,可以使用:

InputStreamReader(InputStream in, CharsetDecoder dec)

并根据您的喜好提供CharsetDecoder