gpt4 book ai didi

Java 字符串字符编码 - 法语 - 荷兰语语言环境

转载 作者:搜寻专家 更新时间:2023-11-01 01:54:08 28 4
gpt4 key购买 nike

我有如下一段代码

public static void main(String[] args) throws UnsupportedEncodingException {
System.out.println(Charset.defaultCharset().toString());

String accentedE = "é";

String utf8 = new String(accentedE.getBytes("utf-8"), Charset.forName("UTF-8"));
System.out.println(utf8);
utf8 = new String(accentedE.getBytes(), Charset.forName("UTF-8"));
System.out.println(utf8);
utf8 = new String(accentedE.getBytes("utf-8"));
System.out.println(utf8);
utf8 = new String(accentedE.getBytes());
System.out.println(utf8);
}

上面的输出结果如下

windows-1252
é
?
é
é

谁能帮我理解这是做什么的?为什么这个输出?

最佳答案

如果您已经有了一个String,就没有必要立即对其进行编码和解码,该字符串已经是有人对原始字节进行解码的结果。

在字符串文字的情况下,某人是编译器将您的源代码读取为原始字节并以您指定的编码对其进行解码。如果您以 Windows-1252 编码物理保存源文件,并且编译器将其解码为 Windows-1252,则一切正常。如果不是,您需要通过声明编译器在编译源代码时使用的正确编码来解决此问题...

线

String utf8 = new String(accentedE.getBytes("utf-8"), Charset.forName("UTF-8"));

什么都不做。 (编码为 UTF-8,解码为 UTF-8 == no-op)

线

utf8 = new String(accentedE.getBytes(), Charset.forName("UTF-8"));

将字符串编码为 Windows-1252,然后将其解码为 UTF-8。结果只能在 Windows-1252 中解码(因为它是在 Windows-1252 中编码的,duh),否则你会得到奇怪的结果。

线

utf8 = new String(accentedE.getBytes("utf-8"));

将字符串编码为 UTF-8,然后将其解码为 Windows-1252。与之前的案例适用相同的原则。

线

utf8 = new String(accentedE.getBytes());

什么都不做。 (编码为 Windows-1252,解码为 Windows-1252 == no-op)

类比可能更容易理解的整数:

int a = 555;
//The case of encoding as X and decoding right back as X
a = Integer.parseInt(String.valueOf(a), 10);
//a is still 555

int b = 555;
//The case of encoding as X and decoding right back as Y
b = Integer.parseInt(String.valueOf(b), 15);
//b is now 1205 I.E. strange result

这两个都没有用,因为在执行任何代码之前我们已经有了所需的整数 555

有必要当字符串离开您的系统时将您的字符串编码为原始字节,并且当它们进入您的系统时需要将原始字节解码为字符串。无需在系统内立即编码和解码

关于Java 字符串字符编码 - 法语 - 荷兰语语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15500529/

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