一个字符是多少?

我说的字符是计算机中使用的字母、数字、字和符号,1个汉字字符存储需要2个字节,1个英文字符存储需要1个字节。

1、1个字符是一个数字

2、1个字符是1个英文字母

3、1个字符是1个空格

4、1个字符是1个符号(不是全部符号都是一个字符)

通常一个字节是8位二进制,表示一个英文字母,一个汉字占2个字节,1个汉字存储需要2个字符等同于2个字符等于1个汉字。

扩展资料:

含义

字符包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。

在 ASCII 编码中,一个英文字母字符存储需要1个字节,在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节,在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。

在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。

参考资料来源:百度百科-字符

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-07-28

如果你说的“字符”就是指 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 实际是做编码转换,你应该显式传入一个参数来指定编码,否则它会使用缺省编码来转换。

你说“ new String("字").getBytes().length  返回的是3 ”,这说明缺省编码是 UTF-8.
如果你显式地传入一个参数,比如这样“ new String("字").getBytes("GBK").length ”,那么返回就是 2。你可以在启动 JVM 时设置一个缺省编码,假设你的类叫 Main,那么在命令行中用 java 执行这个类时可以通过 file.encoding 参数设置一个缺省编码。
比如这样:java -Dfile.encoding=GBK Main
这时,你再执行不带参数的 getBytes() 方法时,new String("字").getBytes().length  返回的就是 2 了,因为现在缺省编码变成 GBK 了。
当然,如果这时你显式地指定编码,new String("字").getBytes("UTF-8").length  返回的则依旧是 3.

否则,会使用所在操作系统环境下的缺省编码。

通常,Windows 系统下是 GBK,Linux 和 Mac 是 UTF-8.
但有一点要注意,在 Windows 下使用 IDE 来运行时,比如 Eclipse,如果你的工程的缺省编码是 UTF-8,在 IDE 中运行你的程序时,会加上上述的 -Dfile.encoding=UTF-8 参数,这时,即便你在 Windows 下,缺省编码也是 UTF-8,而不是 GBK。

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

第2个回答  2019-09-22

一个字符是由一个字节(即8个二进制位)来表示的,不同编码方式、汉字或字母所需字节不同。

1、ASCII 编码:一个英文字母占1个字节。

2、GB 2312 编码/GBK 编码:一个汉字占2个字节。

3、UTF-8:一个英文字母占1个字节,一个汉字占3到4个字节。

4、在UTF-16编码中,字母汉字都占2字节。

5、在UTF-32编码中,任何字符都占4个字节。

也就是说一个字符是2-3个汉字,或者2-8个英文字母。

扩展资料:

汉字,字符,字节,位之间的关系:

1个汉字 = 1个字 = 1个字节

1个字符 = 1个字节 = 8bit(ACSII码下)

1个字符 = 2个字节 = 16bit(Unicode码下)

参考资料来源:百度百科-字符

第3个回答  2008-08-28
一个字符是一个数字、一个英文字母、一个空格或者一个符号(不是全部符号都是一个字符)```

一个汉字=两个字符
第4个回答  推荐于2018-03-13
其实你在用的百度就有很好的例子,你在进度搜索中查找一个中文字”我“,转到查找页面后就会发现URL那里 有一段 %CE%D2 这样的字符, 其实CED2 这样的格式就是 "我" 这个中文字的16进制表示了, 英文1 Byte 就是 8 bit 1字节就是8位 电脑是用2制的,二进制单位就是bit 位。 2个16进制就等于8位。 所以中文字符是2个字节存储的。
中文一般使用区位码, 第一个字节表示区,就是数字,符号,英文。。区,第二字节就是这个区的定位 。 要更了解区位码,就查找相关内容吧
像 我 CED2 CE十进制就是206 DE十进制就是210 ,可以理解为去门牌号为206的房间里找第210个房间里的东西,里面就放着一个" 我“字 。大房间里有多个小房间,也许大盒子里放多个小盒子更合适,可以想像铅字排版时,找这些铅字时可能就是这样的方法吧
上面只是汉字字符的存储。
一般来说,英文和数字,只需要 1字节来存储,因为大小写英文A-Za-z加0-9一起都不超过128个。所以用8bit 也就是1 Byte 来存储就够了,这个就是ascii 码 。
似乎你说的字符大小问题可以勉强清晰点了吧?
晕了,搞得自己都把 4bit 当成1 Byte了!本回答被网友采纳