gpt4 book ai didi

java - 我们可以在 ASCII 和 Unicode 之间切换吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:20 25 4
gpt4 key购买 nike

我遇到“char 变量是 Unicode 格式,但也采用/映射到 ASCII”。有什么必要提这个?当然 ASCII 是 1 个字节,Unicode 是 2 个字节。Unicode 本身包含 ASCII 代码(默认情况下 - 它是标准)。那么是否有一些语言中的 char 变量支持 UNICODE 但不支持 ASCII?

另外,字符格式(Unicode/ASCII)是由我们使用的平台决定的,对吧? (UNIX、Linux、Windows 等)。那么假设我的平台使用 ASCII,是否无法切换到 Unicode 或反之亦然?

最佳答案

Java 在内部使用 Unicode。总是。 实际上,它大部分时间使用的是 UTF-16,但现在说的太多了。

它可以在内部使用ASCII(例如对于String)。您可以表示可以在 Unicode 中以 ASCII 表示的任何字符串,因此这应该不是问题。

唯一平台发挥作用的地方是当 Java 必须选择一种编码而您没有指定编码时。例如,当您创建一个 FileWriter 以将 String 值写入 String 时:此时 Java 需要使用一种编码来指定特定字符应如何映射到字节.如果不指定,则使用平台的默认编码。默认编码几乎从不使用 ASCII。大多数 Linux 平台使用 UTF-8,Windows 经常使用一些 ISO-8859-* 衍生物(或其他文化特定的 8 位编码),但当前的操作系统都没有使用 ASCII(仅仅是因为 ASCII 不能代表了很多重要人物)。

事实上,现在纯 ASCII 几乎无关紧要:没有人使用它。 ASCII 作为大多数 8 位编码(包括 UTF-8)映射的公共(public)子集很重要:较低的 128 个 Unicode 代码点在许多情况下 1:1 映射到数值 0-127,许多编码。但是纯 ASCII(值 128-255 是未定义)不再被积极使用。

作为旁注,Java 9 有一个称为“紧凑字符串”的内部优化,其中仅包含可在 Latin-1 中表示的字符的字符串每个字符使用一个字节而不是 2 个字节。这种优化对于各种“计算机语言”,如 XML 和类似的协议(protocol),其中大部分文本都在 ASCII 范围内。但它对开发人员也是完全透明的,因为所有处理都是在 String 类内部完成的,从外部看不到。

关于java - 我们可以在 ASCII 和 Unicode 之间切换吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15610247/

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