我正在尝试将用 Java 编码的 UTF-8 字符串转换为 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 - 在 Java 中将 UTF-8 转换为 ISO-8859-1 - 如何将其保持为单字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/655891/