在 java 中编码转换
2022-09-01 09:28:21
有没有免费的java库,我可以用来将一种编码中的字符串转换为其他编码,比如iconv
?我使用的是 Java 版本 1.3。
你不需要一个超出标准库的库 - 只需使用Charset。(你可以只使用 String 构造函数和 getBytes 方法,但就我个人而言,我不喜欢只使用字符编码的名称。错别字的空间太大了。
编辑:正如注释中指出的那样,您仍然可以使用Charset实例,但可以使用String方法:new String(bytes,charset)和String.getBytes(charset)。
CharsetDecoder
应该是你正在寻找的,不是吗?
许多网络协议和文件使用面向字节的字符集(如 ())存储其字符。
但是,Java的本机字符编码是Unicode UTF16BE(十六位UCS转换格式,大端字节顺序)。ISO-8859-1
ISO-Latin-1
请参阅字符集
。这并不意味着是默认字符集(即:默认的“十六位Unicode代码单位序列与字节序列之间的映射”):UTF16
Java 虚拟机的每个实例都有一个缺省字符集,该字符集可能是也可能不是标准字符集之一。
[,又名 、 、 、 、 ]
默认字符集是在虚拟机启动期间确定的,通常取决于基础操作系统使用的区域设置和字符集。US-ASCII
ISO-8859-1
ISO-LATIN-1
UTF-8
UTF-16BE
UTF-16LE
UTF-16
此示例演示如何将 a 中的编码字节转换为 a 中的字符串,反之亦然。ISO-8859-1
ByteBuffer
CharBuffer
// Create the encoder and decoder for ISO-8859-1
Charset charset = Charset.forName("ISO-8859-1");
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();
try {
// Convert a string to ISO-LATIN-1 bytes in a ByteBuffer
// The new ByteBuffer is ready to be read.
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap("a string"));
// Convert ISO-LATIN-1 bytes in a ByteBuffer to a character ByteBuffer and then to a string.
// The new ByteBuffer is ready to be read.
CharBuffer cbuf = decoder.decode(bbuf);
String s = cbuf.toString();
} catch (CharacterCodingException e) {
}