gpt4 book ai didi

java - UTF-16 中字母 A 占用的字节数是多少?

转载 作者:行者123 更新时间:2023-11-30 03:35:43 24 4
gpt4 key购买 nike

实际上我有一个非常简单的问题,当用Java编码时,字母“A”在UTF-16编码中应该占据的最小大小(字节数)是多少(但这应该是无关紧要的)。

我真的认为这个非常简单:因为 UTF-16 要么是 2 个字节,要么是 4 个字节,而字母 A 是一个“简单”的字节,所以答案应该是两个,但是:

System.out.println("A".getBytes(StandardCharsets.UTF_8).length); // prints 1, as expected
System.out.println("A".getBytes(StandardCharsets.UTF_16).length); // prints 4, I thought it would be 2

System.out.println("AB".getBytes(StandardCharsets.UTF_8).length);// prints 2 as expected
System.out.println("AB".getBytes(StandardCharsets.UTF_16).length); // prints 6, expected 4

有人可以给这里带来一些光明吗?

最佳答案

当您使用 UTF-16 时,需要定义它是小端还是大端。它使用 BOM 或 \uFEFF\uFFFE 在开头添加两个额外字节。

UTF-8 一次一个字节,因此无需跟踪字节顺序。

如果您使用 UTF-16BE 或 UTF-16LE,它会定义顺序,因此不需要 BOM

关于java - UTF-16 中字母 A 占用的字节数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950533/

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