Java在内部使用Unipre。总是。实际上,它大多数时候都使用UTF-16,但是目前还不多。
它 不能在 内部使用ASCII(
String例如)。您 可以 用Unipre表示可以用ASCII表示的任何字符串,因此这不成问题。
该平台 唯一
起作用的地方是Java必须在未指定编码的情况下选择一种编码。例如,当您创建一个
FileWriter将
String值写入String时:此时,Java需要使用编码来指定应如何将特定字符映射到字节。如果未指定,则使用平台的默认编码。该默认编码
几乎从来都不是ASCII 。大多数Linux平台使用UTF-8,Windows 通常 使用某些ISO-8859-
*派生词(或其他特定于区域性的8位编码),但是当前的 *** 作系统都没有使用ASCII(仅仅是因为ASCII不能代表很多重要字符) 。
实际上,如今,纯ASCII几乎是无关紧要的:没有人使用它。ASCII 仅
作为大多数8位编码(包括UTF-8)映射的公共子集很重要:在许多编码中,较低的128个Unipre代码点将1:1映射为0-127的数值。但是不再使用纯ASCII(
未定义 值128-255 )。
附带说明一下,Java
9有一个内部优化,称为“紧凑字符串”,其中仅包含用Latin-1表示的字符的字符串每个字符使用一个字节,而不是2。这种优化对于各种“计算机说话”非常有用例如XML和类似的协议,其中大部分文本位于ASCII范围内。但这对开发人员也是完全透明的,因为所有处理都是在
String类内部完成的,因此从外部看不到。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)