gpt4 book ai didi

java - java中的字符编码

转载 作者:搜寻专家 更新时间:2023-11-01 02:24:23 25 4
gpt4 key购买 nike

我试过下面的代码:

public static void main(String[] args) throws IOException {
String s = "NETWORK";
try (
FileOutputStream fos = new FileOutputStream("d:/endian.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF_16BE");) {
osw.write(s);
osw.flush();

}
}

运行后,我得到一个包含以下链的文件:N E T W O R K;结果文件的大小为 14 字节(7 个字符 * 2 字节)。注意链条字符之间的空格。当我将编码更改为:UTF_16LE 时,我得到一个 14 字节的文件,其中包含以下字符串:NETWORK。字符之间没有空格!我希望得到如下字符串:N E T W O R K。我用记事本打开文件。谁能解释这种行为?

最佳答案

“NETWORK”字符串的二进制表示,使用:

  • UTF_16BE 是:

    00 4E 00 45 00 54 00 57 00 4F 00 52 00 4B(记事本:N E T W O R K)

  • UTF_16LE 是:

    4E 00 45 00 54 00 57 00 4F 00 52 00 4B 00(记事本:NETWORK)

您描述的行为的原因是因为记事本将“NETWORK”字符串的 UTF_16BE 表示识别为 ANSIUTF_16LE 表示“NETWORK”字符串为 UNICODE

如前所述,最好使用 hex editor查看生成文件的二进制表示,以便准确查看写入的内容。

关于java - java中的字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773368/

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