Java字符转换为UTF-8
我正在使用:Java字符转换为UTF-8,java,Java,我正在使用: InputStreamReader isr = new InputStreamReader(fis, "UTF8"); 从文本文件中读入字符并将其转换为UTF8字符 我的问题是,如果正在读取的字符之一无法转换为utf8,会发生什么情况?会有例外吗?或者将删除字符?您没有从一个字符集转换到另一个字符集。您只是指示该文件是UTF 8编码的,以便可以正确读取它 如果您想从1编码转换为另一编码,那么您应该执行以下操作 File infile = new File("x-utf8.txt"
InputStreamReader isr = new InputStreamReader(fis, "UTF8");
从文本文件中读入字符并将其转换为UTF8字符
我的问题是,如果正在读取的字符之一无法转换为utf8,会发生什么情况?会有例外吗?或者将删除字符?您没有从一个字符集转换到另一个字符集。您只是指示该文件是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);
在阅读了DavidGelhar的回复之后,我觉得这段代码可以改进一点。如果您不知道“infle”的编码,则使用库检测编码,然后在检测到的编码中构造读取器。如果输入文件包含无效utf-8的字节,read()将默认使用U+FFFD(65533十进制;Unicode)值替换无效字符 如果需要更多地控制此行为,可以使用:
InputStreamReader(InputStream in, CharsetDecoder dec)
并提供一个
CharsetDecoder
根据您的喜好进行配置。我尝试了以下方法:csd.replaceWith(“”);但是不断得到一个异常:java.lang.IllegalArgumentException:Empty replacement。然后我尝试了csd.onUnmappableCharacter(CodingErrorAction.IGNORE);但这根本不解析文件。我基本上想忽略非utf8字符。