将UTF-8字符串转换为ISO-8859-1 java

将UTF-8字符串转换为ISO-8859-1 java,java,utf-8,character-encoding,iso-8859-1,Java,Utf 8,Character Encoding,Iso 8859 1,我有一个应用程序,我想将utf-8编码的字符串转换为ISO-8859-1,因为这是我的oracle DB的编码 目前,这是我在数据库中插入的内容: 贝尔吉« 但我预计: 贝尔吉 当我用java打印字符串时,我得到以下结果: 贝尔吉« 有人能帮我吗 这是我已经尝试过的: System.out.println(xmlString); Charset utf8charset = Charset.forName("UTF-8"); Charset iso88591charset = Charset.fo

我有一个应用程序,我想将utf-8编码的字符串转换为ISO-8859-1,因为这是我的oracle DB的编码

目前,这是我在数据库中插入的内容:

贝尔吉«

但我预计:

贝尔吉

当我用java打印字符串时,我得到以下结果: 贝尔吉«

有人能帮我吗

这是我已经尝试过的:

System.out.println(xmlString);
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap(xmlString.getBytes(utf8charset));
// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);
// encode ISO-8559-1
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte[] outputData = outputBuffer.array();

xmlt = new oracle.xdb.XMLType(con, new String(outputData, iso88591charset));
评论中的建议也不起作用:

byte[]utf8=xmlString.getBytes(“UTF-8”);
byte[]拉丁文=新字符串(utf8,“UTF-8”)。getBytes(“ISO-8859-1”);
ByteArrayInputStream bis=新的ByteArrayInputStream(拉丁语);
xmlt=新的oracle.xdb.XMLType(con,bis);

通常,UTF-8可以对任何Unicode代码进行编码。ISO-8859-1能够处理其中的一小部分,UTF-8到ISO-8859-1的转码可能导致“替换字符”(�) 在发现不支持的字符时显示在文本中,并且可能存在其他问题

从ISO-8859-1到UTF-8的代码转换没有任何问题

我建议对文本进行转码:

byte[] latin1 = ...
byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");


通常情况下,数据库驱动程序需要处理字符编码。您是否简单地尝试了
xmlt=new oracle.xdb.XMLType(xmlString)
?请解释“UTF-8编码字符串”的含义。你的意思是你有UTF-8字节,用UTF-8以外的字符编码将它们解码成
字符串
?我试过了,并用我使用的代码编辑了我的问题。我做错了什么了吗?通常如我所说,将UTF-8字符串转换成ISO-8859-1不是一个好主意,因为它会产生很多问题,还会在字符处理方面出错。..UTF-8本身可以对任何Unicode代码进行编码
byte[] utf8 = ...
byte[] latin1 = new String(utf8, "UTF-8").getBytes("ISO-8859-1");