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

sha*_*har 6 java unicode ascii

我遇到"char变量是Unicode格式,但也采用/映射到ASCII也很好".有什么需要提到的?当然ASCII是1个字节,Unicode是2.而Unicodeitself中包含ASCII代码(默认情况下 - 它是标准).那么有些语言中char变量支持UNICODE但不支持ASCII吗?

另外,字符格式(Unicode/ASCII)由我们使用的平台决定,对吗?(UNIX,Linux,Windows等).假设我的平台使用ASCII,是不是可以切换到Unicode,反之亦然?

Joa*_*uer 8

Java在内部使用Unicode.总是.实际上,它大部分时间都使用UTF-16,但现在这个细节太多了.

不能在内部使用ASCII(String例如).您可以表示可以用Unicode以Unicode表示的任何字符串,因此这不应该是一个问题.

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

事实上,纯ASCII几乎几乎无关紧要:没有人使用它.ASCII是唯一的,因为大多数的8位编码的映射的一个公共子集是重要的(包括UTF-8):低128 Unicode代码点地图1:1至数值0-127在许多,许多编码.但纯ASCII(其中值128-255 未定义)不再处于活动状态.

作为一个侧面说明,Java的9有一个名为"紧凑型串",其中只包含字符的字符串中所能表述的Latin-1的每个字符使用一个字节的内部优化,而不是2.此优化各种"电脑说话"的非常有用的像XML和类似的协议,其中大部分文本在ASCII范围内.但它对开发人员来说也是完全透明的,因为所有这些处理都是在String课堂内部完成的,并且不会从外部看到.