在Java中将UTF-8转换为ISO-8859-1-如何使其保持为单字节
我正在尝试将UTF-8中Java编码的字符串转换为ISO-8859-1。例如,在字符串“âabcd”中,“â”在ISO-8859-1中表示为E2。在UTF-8中,它表示为两个字节。C3 A2我相信。当我执行getbytes(encoding),然后使用ISO-8859-1编码的字节创建一个新字符串时,我得到两个不同的字符。â。还有其他方法可以使字符保持一致,即abcd吗?
回答:
如果你要处理UTF-16以外的字符编码,则不应使用java.lang.String
或char
原始语言,而应仅使用byte[]数组或ByteBuffer
对象。然后,你可以java.nio.charset.Charset
用来在两种编码之间进行转换:
Charset utf8charset = Charset.forName("UTF-8");Charset iso88591charset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap(new byte[]{(byte)0xC3, (byte)0xA2});
// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);
// encode ISO-8559-1
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte[] outputData = outputBuffer.array();
以上是 在Java中将UTF-8转换为ISO-8859-1-如何使其保持为单字节 的全部内容, 来源链接: utcz.com/qa/421849.html