📅  最后修改于: 2023-12-03 14:42:45.391000             🧑  作者: Mango
在Java中,CharsetEncoder是用于将字符序列编码为指定字符集的字节序列的类。CharsetEncoder类包含许多方法,在这里,我们将重点介绍malformedInputAction()方法。
malformedInputAction()方法是CharsetEncoder类的一个方法,它返回当前编码器的“异常输入动作”。它决定了当遇到非法输入时,编码器应该采取何种行为。可以使用CharsetDecoder的 onMalformedInput() 方法设置此值。
public final CodingErrorAction malformedInputAction()
该方法返回当前编码器的“异常输入动作”。
CodingErrorAction
在下面的示例中,我们将创建一个所需字符和字节数组的 CharsetEncoder,然后设置错误输入处理操作和输入缓冲区:
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CodingErrorAction;
public class CharsetEncoderExample {
public static void main(String[] args) {
Charset utf8 = Charset.forName("UTF-8");
CharBuffer cb = CharBuffer.wrap("Hello, World!");
ByteBuffer bb = ByteBuffer.allocate(50);
CharsetEncoder encoder = utf8.newEncoder();
// set error handling action
encoder.onMalformedInput(CodingErrorAction.IGNORE);
// encode the character buffer into the byte buffer
encoder.encode(cb, bb, true);
bb.flip();
byte[] bytes = new byte[bb.remaining()];
bb.get(bytes);
System.out.println(new String(bytes, utf8));
}
}
在这个例子中,我们将创建一个基于UTF-8的编码器,并将其配置为在遇到非法输入时忽略它们。该编码器使用输入缓冲区中的字符,将它们编码为字节,并将其存储在输出缓冲区中。最后,我们将字节转换回字符串并将其打印出来。
输出应为:
Hello, World!
在本篇文章中,我们介绍了Java中的CharsetEncoder类的malformedInputAction()方法。我们了解了该方法返回当前编码器的“异常输入动作”的语法和返回类型。最后,我们还展示了一个演示该方法的示例。