Java CharsetEncoder encode(CharBuffer in)方法及示例
encode(CharBuffer input) 方法是 java.nio.charset.CharsetEncoder 的一个内置方法,它将单个输入字符缓冲区的剩余内容编码到一个新分配的字节缓冲区。encode()方法本身就实现了整个编码的操作。如果操作正在进行中,就不应该调用这个函数。
语法:
public final ByteBuffer encode(CharBuffer input)
参数 :该函数接受一个强制性参数input,指定输入的字符缓冲区。
返回值 :该函数返回一个新分配的包含编码操作结果的字节缓冲区。
错误和异常: 该函数抛出了四个异常,可以描述如下。
- IllegalStateException : 如果一个编码操作已经在进行中,就会抛出这个异常。
- MalformedInputException:如果从输入缓冲区的当前位置开始的字符序列不是合法的16位Unicode序列,并且当前的畸形输入操作是CodingErrorAction.REPORT,就会抛出该异常。
- UnmappableCharacterException : 如果从输入缓冲区的当前位置开始的字符序列不能被映射到一个等效的字节序列,并且当前的unmappable-character动作是CodingErrorAction.REPORT,那么就会抛出这个问题。
- 字符编码异常(CharacterCodingException
下面是上述函数的实现。
程序1:
// Java program to implement
// the above function
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
public class Main {
public static void main(String[] args) throws Exception
{
// Gets the new encoder
CharsetEncoder encoder = Charset.forName("UTF8").newEncoder();
// Encodes
String res = "gfggfg";
System.out.println(encoder.encode(CharBuffer.wrap(res)));
}
}
输出:
java.nio.HeapByteBuffer[pos=0 lim=6 cap=6]
程序2:
// Java program to implement
// the above function
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
public class Main {
public static void main(String[] args) throws Exception
{
// Gets the new encoder
CharsetEncoder encoder = Charset.forName("UTF16").newEncoder();
// Encodes
String res = "gopal";
System.out.println(encoder.encode(CharBuffer.wrap(res)));
}
}
输出:
java.nio.HeapByteBuffer[pos=0 lim=12 cap=21]
异常程序不能在程序中演示。
参考资料: https://docs.oracle.com/javase/10/docs/api/java/nio/charset/CharsetEncoder.html#encode(java.nio.CharBuffer)