UTF-8和GBK编码的区别和详细解释

各位看官,大家早安午安晚安呀~~~

如果您觉得这篇文章对您有帮助的话

欢迎您一键三连,小编尽全力做到更好
欢迎您分享给更多人哦

今天我们来学习:一个小的知识点---UTF-8和GBK编码的解释

1.关于bite位和进制的关系

1 个比特(bit)(0,1)就是 1 个二进制位

即一个字节(8个比特位,8个二进制位,两个16进制))

2.ASCII码

ASCII(美国信息交换标准代码)

  • 范围:7-bit(0-127),共 128 个字符。

  • 包含 :英文大小写字母(A-Z, a-z)、数字(0-9)、标点符号(如 !@#$)及控制字符(如 \n)。

  • 示例

    • 'A'0x41(65)

    • ' a ' => (97)

    • '0'0x31(48)

UTF-8 与 ASCII (一共128个字符)的关系

  • ASCII 是 UTF-8 的子集所有 ASCII 文本都是合法的 UTF-8 文本。

  • UTF-8 扩展了 ASCII:支持非 ASCII 字符(如中文),而 ASCII 无法表示这些字符。

3.UTF-8和GBK区别

特性 UTF-8 GBK(汉字内码扩展规范)
支持语言 全球所有语言(UTF-8是Unicode编码的一种) Unicode还包含UTF-16 主要支持中文(含繁体)、日韩部分字符
兼容性 兼容 ASCII 不兼容 ASCII(中文字符占用 2 字节)
字节长度 **(变长)**1~4 字节(英文 1 字节,中文 3 字节) 英文 1 字节,中文 2 字节
文件大小 中文内容比 GBK 大 中文内容比 UTF-8 更紧凑
适用范围 国际化场景(Web、移动应用) 旧版中文系统、部分国内软件 GBK 专为中文设计,比 UTF-8 更紧凑但不兼容国际标准。
  • 优先使用 UTF-8 ,仅在旧系统中考虑 GBK/Big5 等本地编码。

3.如何查看字节数组的内容?

字节数组里面每一个元素都是一个字节(8个比特位)可以是10进制,2进制,8进制,16进制都可以

举例:

这个hello,一个英文单词是一个字节

h在字节数组中是 104(10进制),68(16进制), 0110 1000 (8位二进制)

(1)直接打印 byte[]

复制代码
byte[] bytes = "hello".getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.toString(bytes));

输出默认是10进制

复制代码
[104, 101, 108, 108, 111]  // 'h'=104, 'e'=101, 'l'=108, 'o'=111

这是 byte 的十进制表示。

(2)以十六进制(Hex)打印

复制代码
import cn.hutool.core.util.HexUtil;

byte[] bytes = "hello".getBytes(StandardCharsets.UTF_8);
System.out.println(HexUtil.encodeHexStr(bytes));

输出

复制代码
68656c6c6f()

68=h, 65=e, 6c=l, 6f=o(ASCII/UTF-8 编码)

相关推荐
破烂公司一级特派员25 分钟前
互联网大厂Java面试实录:从基础到微服务的深度考察
java·spring boot·微服务·八股文·面试技巧
Linux运维老纪27 分钟前
微服务6大拆分原则
java·运维·微服务
黄俊懿27 分钟前
【深入理解SpringCloud微服务】手写实现一个微服务分布式事务组件
java·分布式·后端·spring·spring cloud·微服务·架构师
在未来等你32 分钟前
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-2
java·智能问答·milvus·向量数据库·rag·spring ai
极小狐1 小时前
如何使用极狐GitLab 软件包仓库功能托管 helm chart?
java·linux·服务器·数据库·c#·gitlab·maven
有梦想的攻城狮1 小时前
spring中的@Inject注解详情
java·后端·spring·inject
Top`1 小时前
服务预热原理
java·后端·spring
loveLifeLoveCoding2 小时前
springboot 加载 tomcat 源码追踪
java·spring boot·spring
幽络源小助理2 小时前
SpringBoot框架开发网络安全科普系统开发实现
java·spring boot·后端·spring·web安全
俺不是西瓜太郎´•ﻌ•`2 小时前
二维差分数组(JAVA)蓝桥杯
java·开发语言·蓝桥杯