gpt4 book ai didi

java - 如何使 InputStreamReader 在编码无效数据时失败?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:14 24 4
gpt4 key购买 nike

我有一些字节应该是 UTF-8 编码的,但其中可能包含一个文本是 ISO8859-1 编码,如果用户不知何故没有设法以正确的方式使用他的文本编辑器。

我使用 InputStreamReader 读取文件:

InputStreamReader reader = new InputStreamReader( 
new FileInputStream(file), Charset.forName("UTF-8"));

但每次用户使用像“ä”这样的变音符号时,当存储在 ISO8859-1 中时,这些变音符号是无效的 UTF-8,InputStreamReader 不会提示但会添加占位符字符。

是否有简单的方法使它在无效输入时抛出异常?

最佳答案

CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
decoder.onMalformedInput(CodingErrorAction.REPORT);
decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
InputStreamReader reader = new InputStreamReader(
new FileInputStream(file), decoder);

关于java - 如何使 InputStreamReader 在编码无效数据时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14702189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com