12中的英文字母占几个字节?

探讨了GB2312编码中字符的字节表示,解析了全角与半角字符的区别,揭示了在Java中使用GB2312编码hello字符串为何字节数组长度为5而非预期的10。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

byte[] bb="hello".getBytes("gb2312");
System.out.println("bb.length:::"+bb.length);
for(byte bb1:bb)
System.out.println((char)bb1);
运行代码得到如下结果:
bb.length:::5
h
e
l
l
o


我查了一些资料,都说gb2312中的所有字符都是用二个字节表示。如果是这样,那我上面的程序中bb字节数组的长度应该是10啊
可结果却是却是5.我想请问gb2312中的英文字母符号到底是用几个字节表示啊?

 

 

ASCII 英文一个字节 
gb2312,gbk 中文两个字节,英文一个字节 
在中文系统中ansi一般指gb2312或gbk 
GB2312、GBK都属于双字节字符集 (DBCS) 
Utf-8 中文三个字节,英文一个字节 
Unicode 中文两个字节,英文两个字

 

 

嘿嘿,权威的如何解释GB2312不是sun公司,而是我们国家自己的标准啊,每一个大专、大学的任何学生,其计算机基础课程中都会详细讲解GB2312的啊。
byte[] bb="hello".getBytes("gb2312"); 
System.out.println("bb.length:::"+bb.length); 
我查了一些资料,都说gb2312中的所有字符都是用二个字节表示。如果是这样,那我上面的程序中bb字节数组的长度应该是10啊 
可结果却是却是5.我想请问gb2312中的英文字母符号到底是用几个字节表示啊?
答:GB2312中1区到15区共682个字符或图形符号都是全角方式下的字符。即:
若byte[] bb="hello".getBytes("gb2312");(注意是全角方式下),bb字节数组的长度就会是10了。
因此:gb2312中的所有字符都是用二个字节表示(是因为:它的字符都是全角方式)。gb2312中不会对半角方式下的字符编码的(这是ASCII码的事情),因此:在getBytes("gb2312");转换时,半角的字符都是一个字节,全角的同样字符才是两个字节。

转载于:https://www.cnblogs.com/Impulse/articles/11250771.html

### 数据库中数字、字母和汉字用的字节数 #### MySQL 中的数据存储情况 在 MySQL 中,数据类型的存储大小取决于所使用的字符集。以下是常见字符集中不同类型字符的存储需求: - **Latin1 字符集**: - 数字:通常以整数形式存储,不涉及字符集问题。 - 英文字母:每个英文字母 1 个字节[^1]。 - 汉字:由于 Latin1 是单字节编码,无法正确存储汉字,如果强制存储,则可能被截断或显示为乱码。 - **UTF8 字符集**: - 数字:同样作为整型处理,不受字符集影响。 - 英文字母:每个英文字母 1 个字节。 - 汉字:每个汉字 3 个字节。 - **GBK 字符集**: - 数字:无变化。 - 英文字母:每个英文字母 1 个字节。 - 汉字:每个汉字 2 个字节。 对于 `VARCHAR` 类型字段,在定义长度时是以字符数量而非字节数来衡量的。这意味着无论是英文还是中文都可以存入指定数量的字符,只是实际所需的字节数会有所不同[^2]。 #### Oracle 数据库中的数据存储情况 Oracle 的字符存储也依赖于具体的字符集设置。例如: - 使用 AL32UTF8 字符集时,一个汉字一般据 3 到 6 个字节(具体由 Unicode 编码决定)。可以通过如下 SQL 查询确认某个特定汉字的实际用空间: ```sql SELECT LENGTHB('长') FROM DUAL; ``` 这里的 `LENGTHB` 函数返回的是基于字节的结果[^3]。 #### SQLite 和 PostgreSQL 对比分析 SQLite 默认采用 UTF-8 编码方式储存文本资料,因此其行为类似于上述提到的 MySQL under UTF8 charset 下的表现模式——即英文字符消耗单一单位而多数亚洲语言符号则需三个连续位置表达完整意义[^4]。 PostgreSQL 支持多种编码标准,默认情况下也是通过 UTF8 来实现国际化支持的功能特性。所以它对待西欧地区常用ASCII范围内的简单符号只需耗费单独的一位资源即可完成记录工作;而对于那些来自东亚地区的复杂表意图形来说,则往往要动用到三倍以上的容量才行。 综上所述,各主流关系型数据库管理系统针对相同种类的信息元素可能会因为内部架构设计理念差异以及外部环境适应策略的不同而导致最终呈现出来的物理尺寸存在显著差别。 ```python # 示例 Python 脚本展示如何计算字符串长度 def calculate_byte_size(s, encoding='utf-8'): return len(s.encode(encoding)) print(calculate_byte_size("A")) # 输出: 1 print(calculate_byte_size("一", 'utf-8')) # 输出: 3 print(calculate_byte_size("一", 'gbk')) # 输出: 2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值