当前位置: 首页 > 面试题库 >

在Java中将UTF-8转换为ISO-8859-1-如何使其保持为单字节

呼延光明
2023-03-14
问题内容

我正在尝试将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.Stringchar原始语言,而应仅使用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();


 类似资料:
  • 问题内容: 我正在阅读XML文档(UTF-8),并最终使用ISO-8859-1在网页上显示内容。正如预期的那样,有几个字符显示不正确,比如,和(他们显示为?)。 是否可以将这些字符从UTF-8转换为ISO-8859-1? 这是我编写的尝试此功能的代码段: 我不太确定发生了什么问题,但是我认为是re​​adLine()引起了麻烦(因为字符串将是Java / UTF-16编码的?)。我尝试的另一种变化

  • 问题内容: 有谁知道如何将字符串从ISO-8859-1转换为UTF-8并重新转换为Java? 我从网络上获取一个字符串并将其保存在RMS(J2ME)中,但是我想保留特殊字符并从RMS中获取字符串,但要使用ISO-8859-1编码。我该怎么做呢? 问题答案: 通常,你无法执行此操作。UTF-8能够编码任何Unicode代码点。ISO-8859-1只能处理其中的一小部分。因此,从ISO-8859-1转

  • 问题内容: 我正在制作一个javascript应用程序,该应用程序使用jquery 检索文件并将数据注入到其所嵌入的网页中。 这些文件使用UTF-8编码,并包含重音字符,例如é,ö和å。 问题是我无法控制将要使用该应用程序的页面上的字符集。 有些将使用UTF-8,但其他一些将使用iso-8859-1字符集。这当然会使文件中的特殊字符乱码。 如何使用JavaScript将特殊的UTF-8字符转换为等

  • 问题内容: 我有一个带有HTML实体的ASCII字符串,例如: 我需要此字符串不包含那些实体,并将其转换为UTF-8字符。有没有简单的方法,在Java中可以做到这一点? 哪里: 返回“aà” 或类似的东西? 问题答案: 看一下org.apache.commons.lang.StringEscapeUtils.unescapeHtml(…)。显然,它可以理解HTML 4中定义的所有字符实体。

  • 问题内容: 我的软件在UTF8中得到的字符串比我转换为ISO 8859 1所需的字符串多。我知道UTF8域比iso 8859大。但是UTF8中的数据先前已从ISO上转换,所以我不应该错过任何内容。 我想知道是否存在从UTF8转换为iso-8859-1的简单/直接方法。 谢谢 问题答案: 这是您可能会发现有用的功能:。它可以转换为(包括欧元,但没有),但是对于-> -> 往返的-> 转换部分,它也可

  • 问题内容: 我们有一个系统,客户(主要是欧洲人)输入的文本(使用UTF-8)必须分发到不同的系统,其中大多数接受UTF-8,但是现在我们还必须将文本分发到仅接受美国的美国系统。 -Ascii 7位 因此,现在我们需要将所有欧洲字符翻译成最近的美国Ascii。是否有任何Java库可帮助完成此任务? 现在,我们刚刚开始添加到转换表中,在该表中Å(瑞典AA)-> A等,在找不到与输入字符匹配的位置的情况