繁体   English   中英

Java字符转换为UTF-8

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM