gpt4 book ai didi

Java 字符串 - UTF 和字节表示

转载 作者:行者123 更新时间:2023-11-29 05:54:21 25 4
gpt4 key购买 nike

我想知道它的 java String 和字节表示形式。我有一个以 UTF-16 little endian 编码的文件,当我在我的 hexeditor 中查看它时,我可以看到

ff fe 61 00 f3 00 61 00 00

现在,当我使用

将它加载到 Java 时
 BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-16"));
StringBuilder builder = new StringBuilder();
String line;

while ((line = reader.readLine()) != null)
builder.append(line);
System.out.println(Arrays.toString(builder.toString().getBytes()));

我可以在输出中看到

[97, -13, 97]

如果我正在打印字节,为什么我看不到在我的十六进制编辑器中可以看到的零字节?

最佳答案

那是因为 Java 不会在内存中保留 UTF-16 格式的字符串,那会很浪费,而且因为 getBytes 返回默认系统字符集中的字符串(在您的机器上可能不是 UTF-16)javadoc .正确的重载应该是 getBytes("UTF-16") - 这样您应该在末尾看到 0 填充,也许在开头看到 BOM (ff fe)。

关于Java 字符串 - UTF 和字节表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12742291/

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