gpt4 book ai didi

java - UTF-8 和 ISO 8859-1 之间的转换 :

转载 作者:行者123 更新时间:2023-11-29 03:49:50 25 4
gpt4 key购买 nike

我找到了以下 code 所以。这真的有用吗?

String xml = new String("áéíóúñ");
byte[] latin1 = xml.getBytes("UTF-8");
byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");

我的意思是,latin1 在第二行是 UTF-8 编码的,但在第三行是 ISO-8859-1 编码的?这行得通吗?

并不是我不想批评引用的代码,我只是感到困惑,因为我遇到了一些非常相似的遗留代码,这些代码似乎有效,但我无法解释原因。

编辑:我猜原来是post ,第 2 行中的“UTF-8”只是一个错字。但我不确定...

EDIT2:在我最初发布后,有人编辑了上面的代码并将第二行更改为 byte[] latin1 = xml.getBytes("ISO-8859-1");。我不知道是谁干的,也不知道他为什么这样做,但很明显这把事情搞砸了。对所有看到错误版本代码的人表示抱歉。我不知道是谁编辑的。上面的代码现在是正确的。

最佳答案

getBytes(Charset charset) 生成使用 charset 编码的字节数组,因此 latin1 是 UTF-8 编码的。

System.out.println(latin1.length); 作为第三行,它会告诉你字节数组长度是 12。这意味着它真的是 UTF-8 编码的。

new String(latin1, "ISO-8859-1") 不正确,因为 latin1 是 UTF-8 编码的,您要将其解析为 ISO-8859-1。这就是为什么它会产生一个由 12 个垃圾符号组成的字符串:áéÃóúñ

当您使用 UTF-8 编码从 áéóúñ 获取字节时,它会生成一个 24 长字节数组。

我希望现在一切都清楚了。

关于java - UTF-8 和 ISO 8859-1 之间的转换 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9330793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com