我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:博发彩票 > 多字节 >

一个字符是几个字

归档日期:06-07       文本归类:多字节      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部一个字符是一个数字、一个英文字母、一个空格或者一个符号(不是全部符号都是一个字符)```

  如果你说的“字符”就是指 Java 中的 char,那好,那它就是 16 位,2 字节。

  如果你说的“字符”是指我们用眼睛看到的那些“抽象的字符”,那么,谈论它占几个字节是没有意义的。具体地讲,脱离具体的编码谈某个字符占几个字节是没有意义的。

  就好比有一个抽象的整数“42”,你说它占几个字节?这得具体看你是用 byte,short,int,还是 long 来存它。

  用 byte 存就占一字节,用 short 存就占两字节,int 通常是四字节,long 通常八字节。

  当然,如果你用 byte,受限于它有限的位数,有些数它是存不了的,比如 256 就无法放在一个 byte 里了。

  字符是同样的道理,如果你想谈“占几个字节”,就要先把编码说清楚。同一个字符在不同的编码下可能占不同的字节。

  就以你举的“字”字为例,“字”在 GBK 编码下占 2 字节,在 UTF-16 编码下也占 2 字节,在 UTF-8 编码下占 3 字节,在 UTF-32 编码下占 4 字节。不同的字符在同一个编码下也可能占不同的字节。

  “字”在 UTF-8 编码下占3字节,而“A”在 UTF-8 编码下占 1 字节。(因为 UTF-8 是变长编码),而 Java 中的 char 本质上是 UTF-16 编码。而 UTF-16 实际上也是一个变长编码(2 字节或 4字节)。

  如果一个抽象的字符在 UTF-16 编码下占 4 字节,显然它是不能放到 char 中的。换言之, char 中只能放 UTF-16 编码下只占 2 字节的那些字符。而 getBytes 实际是做编码转换,你应该显式传入一个参数来指定编码,否则它会使用缺省编码来转换。

  由于受启动参数及所在操作系统环境的影响,不带参数的 getBytes 方法通常是不建议使用的,最好是显式地指定参数以此获得稳定的预期行为。

本文链接:http://dixiebandcamp.net/duozijie/510.html