Java中的 CharsetEncoder encode(CharBuffer in) 方法及示例
encode(CharBuffer input)方法是Java.nio.charset.CharsetEncoder的内置方法,它将单个输入字符缓冲区的剩余内容编码到新分配的字节缓冲区。 encode() 方法本身实现了编码的整个操作。如果操作正在进行,则不应调用此函数。
语法:
public final ByteBuffer encode(CharBuffer input)
参数:该函数接受指定输入字符缓冲区的强制参数输入。
返回值:该函数返回一个新分配的字节缓冲区,其中包含编码操作的结果。
错误和异常:该函数抛出四个异常,描述如下:
- IllegalStateException :如果编码操作已经在进行中,则抛出该异常。
- MalformedInputException :如果从输入缓冲区的当前位置开始的字符序列不是合法的 16 位 Unicode 序列并且当前的错误输入操作是 CodingErrorAction.REPORT,则抛出此异常。
- UnmappableCharacterException :如果从输入缓冲区的当前位置开始的字符序列不能映射到等效的字节序列并且当前不可映射的字符操作是 CodingErrorAction.REPORT,则抛出此异常
- 字符编码异常
下面是上述函数的实现:
方案一:
Java
// 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
// 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=6 cap=6]
方案二:
Java
// 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: Java Java.nio.CharBuffer)