【发布时间】:2014-08-29 03:06:35
【问题描述】:
我尝试将 UTF8 字符转换为 ISO-8859-1,但所有字符(如 0x84;0x96;)都没有转换为 ISO-8859-1,请参见下面的 java 代码
static byte[] encode(byte[] arr) throws CharacterCodingException{
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap( arr );
// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);
// encode ISO-8559-1
ByteBuffer outputBuffer= iso88591charset.newEncoder()
.onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE)
.encode(data);
data = iso88591charset.decode(outputBuffer);
byte[] outputData = outputBuffer.array();
return outputData;
}
请帮忙解决。 谢谢。
【问题讨论】:
-
你确定这些字符存在于 ISO-8859-1 中吗?它的维基百科页面说并非所有语言的字符都受支持。您必须找到一种方法将丢失的字符映射到更简单的字符,例如没有口音。
标签: java utf-8 iso-8859-1