gpt4 book ai didi

java - 如何在 Java/Scala 中跳过流中的无效字符?

转载 作者:IT老高 更新时间:2023-10-28 20:56:56 25 4
gpt4 key购买 nike

例如我有以下代码

Source.fromFile(new File( path), "UTF-8").getLines()

它会抛出异常

Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:319)

我不在乎是否有些行没有被读取,但是如何跳过无效字符并继续读取行?

最佳答案

您可以通过调用 CharsetDecoder.onMalformedInput 来影响字符集解码处理无效输入的方式。 .

通常您永远不会直接看到 CharsetDecoder 对象,因为它将在幕后为您创建。因此,如果您需要访问它,您需要使用允许您直接指定 CharsetDecoder 的 API(而不仅仅是编码名称或 Charset)。

此类 API 最基本的示例是 InputStreamReader :

InputStream in = ...;
CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
decoder.onMalformedInput(CodingErrorAction.IGNORE);
Reader reader = new InputStreamReader(in, decoder);

请注意,此代码使用 Java 7 类 StandardCharsets ,对于早期版本,您可以简单地将其替换为 Charset.forName("UTF-8") (或使用 the Charsets class 中的 Guava )。

关于java - 如何在 Java/Scala 中跳过流中的无效字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280956/

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