3 回答
TA贡献1998条经验 获得超6个赞
如果要处理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();
TA贡献1828条经验 获得超3个赞
byte[] iso88591Data = theString.getBytes("ISO-8859-1");
会成功的。从您的描述看来,您似乎正在尝试“存储ISO-8859-1字符串”。Java中的字符串对象始终以UTF-16隐式编码。无法更改该编码。
您可以做的是,尽管可以得到构成其其他编码的字节(使用.getBytes()上面显示的方法)。
添加回答
举报