[英]Java character conversion to UTF-8
我在用:
InputStreamReader isr = new InputStreamReader(fis, "UTF8");
从文本文件中读取字符并将其转换为UTF8字符。
我的问题是,如果被读取的一个字符无法转换为utf8,会发生什么? 会有例外吗? 或者会让角色掉线?
你没有从一个charset转换到另一个charset。 您只是指示该文件是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库检测编码,然后使用检测到的编码构建阅读器。
如果输入文件包含无效的字节utf-8,则read()将默认使用值U + FFFD(65533十进制; Unicode “替换字符” )替换无效字符。
如果您需要对此行为进行更多控制,可以使用:
InputStreamReader(InputStream in, CharsetDecoder dec)
并提供符合您喜好的CharsetDecoder
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.