Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 - Fatal编程技术网

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字符。