常用字符集编码详解(ASCII GB2312 GBK GB18030 unicode UTF-8)

yizhihongxing

常用字符集编码详解

在计算机中,各种语言的字符需要通过字符编码来表示,常见的字符集编码包括ASCII、GB2312、GBK、GB18030、unicode、UTF-8。下面逐一介绍。

ASCII

ASCII(American Standard Code for Information Interchange)是最早的字符编码,将每个字符用7位十进制数表示。编码范围是0-127,其中控制字符(如换行、回车等)占用了前32个。例如,字符'A'的ASCII码是65。

GB2312

GB2312 是中国官方使用的汉字编码方式,采用2个字节(16位)表示每个汉字,编码范围是0xA1A1-0xFEFE,其中前一个字节位于0xA1-0xF7,后一个字节位于0xA1-0xFE。例如,“中文”两个字的GB2312码是0xD6D0B9FAC3C5。

GBK

GBK是GB2312的扩展版本,在不改变GB2312的基础上,重新定义了一些未使用的区域,并将汉字编码范围扩展至0x8140-0xFEFE,同时保持了与GB2312编码范围内字符的兼容性。例如,“中文”两个字的GBK码是0xB1A8D7D6。

GB18030

GB18030是中国发布的最新的汉字编码标准,兼容GB2312和GBK,但编码范围更广。其中汉字的编码使用1至4个字节表示,最大编码范围是0x01-0x10FFFF,包含了Unicode的全部字符。例如,“中文”两个字的GB18030码是0xCAC7D7D6。

Unicode

Unicode 是国际组织制定的字符编码标准,将每个字符用一个唯一的码位表示,编码范围是0-0x10FFFF,其中前128个码位与ASCII编码一致,后面的码位包含了各种语言的字符,包括汉字、拉丁字母、希腊字母、数学符号等。例如,“中文”两个字的Unicode码是0x4E2D4E00。

UTF-8

UTF-8是一种基于Unicode标准的变长字符编码方式,可以表示Unicode编码范围内的所有字符,具有很好的兼容性和可扩展性。UTF-8编码规则如下:

  • 如果字符的码位在0-127之间,用一个字节表示,最高位为0;
  • 如果字符的码位超过127,用多个字节表示,每个字节的最高位均为1,其余位用该字符码的二进制表示,除第一个字节外,其余字节最高位为0。

例如,“中文”两个字的UTF-8编码为0xE4B8ADE69687。

示例1

下面给出将字符串"hello"分别用ASCII和UTF-8编码的代码示例:

# ASCII编码
s = "hello"
res = []
for c in s:
    res.append(str(ord(c)))
print(",".join(res))
# 输出结果:104,101,108,108,111

# UTF-8编码
s = "hello"
res = []
for c in s:
    b = c.encode('utf-8')
    res.append(' '.join([str(b[i]) for i in range(len(b))]))
print(",".join(res))
# 输出结果:104 101 108 108 111

示例2

下面给出将汉字"中文"分别用GBK和UTF-8编码的代码示例:

# GBK编码
s = "中文"
b = s.encode('gbk')
res = []
for i in range(len(b)):
    if i%2 == 0:
        res.append(str(b[i])+","+str(b[i+1]))
print(",".join(res))
# 输出结果:176,161,200,165

# UTF-8编码
s = "中文"
b = s.encode('utf-8')
res = []
for i in range(len(b)):
    res.append(str(b[i]))
print(",".join(res))
# 输出结果:228,184,173,230,150,135

以上就是常用字符集编码的详细攻略,如有有疑问,欢迎留言讨论!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:常用字符集编码详解(ASCII GB2312 GBK GB18030 unicode UTF-8) - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java的Struts框架报错“NoSuchSubscribedEventException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NoSuchSubscribedEventException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此。在这种情况下,需要检查文件以解决此问题。 事件名称错误:如果事件名称不正确,则可能出现此。在这种情况下,需要检查事件名称以解决此问题。 以下是两个实例: 例 …

    Java 2023年5月5日
    00
  • spring boot配置拦截器代码实例

    下面我将为你详细讲解如何实现Spring Boot配置拦截器的完整攻略。 1. 准备工作 首先,你需要创建一个Spring Boot项目,可以使用Spring Initializr快速生成模板。然后,你需要在pom.xml文件中添加spring-boot-starter-web和spring-boot-starter-test依赖。 2. 创建拦截器 在Sp…

    Java 2023年5月26日
    00
  • java -length的三种用法说明

    下面是关于“java -length的三种用法说明”的完整攻略: 1. 用法一:获取数组长度 在Java中,我们可以通过 .length 获取一个数组的长度,但是在一些情况下,使用 java -length 命令同样可以用于获取数组的长度。具体实现如下: java -cp . ClassName -length 其中,ClassName 是你的Java程序中…

    Java 2023年5月27日
    00
  • Java开发学习之Bean的生命周期详解

    Java开发学习之Bean的生命周期详解 什么是Bean 在Java中,一个Java类如果被添加了特殊的注解,就可以被称为一个Bean,而这个类的实例就是一个实例化的Bean。 Bean是Java语言中一种特殊的类,是一个组件,含有规范的属性和行为,并且可以通过接口来定义。 Bean的生命周期 在Java中,Bean的生命周期从创建、初始化、使用到销毁,可以…

    Java 2023年5月20日
    00
  • jsp中如何实现按下回车键自动提交表单

    在JSP中实现按下回车键自动提交表单,可以采用两种方式来实现: 利用JavaScript 利用form表单属性 下面我将给出详细的步骤以及示例说明。 利用JavaScript 在jsp页面中嵌入JavaScript代码段 <script type="text/javascript"> window.onload=functio…

    Java 2023年6月15日
    00
  • 史上最全的java随机数生成算法分享

    史上最全的Java随机数生成算法分享 介绍 在Java编程中,我们经常需要使用随机数来模拟真实情况、生成测试数据、加密等等场景。本文将介绍Java中常用的随机数生成算法,包括伪随机数生成器和真随机数生成器,并提供代码示例方便学习和使用。 伪随机数生成器 伪随机数生成器生成的随机数是伪随机的,也就是说它们的分布不是完全随机的,但它们通常可以满足人们的需求。 M…

    Java 2023年5月19日
    00
  • Java StringBuilder类相关知识总结

    下面是关于Java StringBuilder类的详细讲解攻略。 字符串拼接的问题 在Java中,字符串拼接可以使用+号或者字符串连接方法concat()来实现,示例如下: String str1 = "Hello"; String str2 = "World"; String str3 = str1 + "…

    Java 2023年5月27日
    00
  • java编程SpringSecurity入门原理及应用简介

    Java编程Spring Security入门原理及应用简介攻略 Spring Security是一款基于Spring框架的安全框架,它为我们的Java应用程序提供了一种全面的安全解决方案。 本篇攻略将一步步地介绍Spring Security的入门原理,以及如何在Java编程中应用Spring Security。 Spring Security的入门原理 …

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部