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

常用字符集编码详解

在计算机中,各种语言的字符需要通过字符编码来表示,常见的字符集编码包括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中的class类

    我来为大家详细讲解一下Java中的class类。 什么是class类 在Java中,class是一种特殊的数据类型,用于描述Java程序中的对象。Java中所有的对象都是基于class创建的。每个class定义了一组数据和方法,就是一种封装数据和行为的机制。 class类的详细组成 一个class通常包含以下几个部分: 类名:用来代表该类的唯一名称,类名通常…

    Java 2023年5月26日
    00
  • Java开发者就业需要掌握的9大专业技能

    关于Java开发者就业需要掌握的9大专业技能,我们可以从以下几点展开讲解: 1. Java基础知识 Java基础知识是Java开发者必须掌握的基础技能之一。包括基本的语法、面向对象的特性、集合框架、异常处理、多线程等。只有深入理解Java语言的基本机制,才能为后续的高级知识打下牢固的基础。 示例:如何实现一个简单的Java程序?请编写一个Hello Worl…

    Java 2023年5月20日
    00
  • WIN7系统JavaEE(java)环境配置教程(一)

    WIN7系统JavaEE(java)环境配置教程(一) 本教程将演示如何在WIN7系统上配置JavaEE(java)开发环境,包括JDK、Eclipse和Tomcat的安装与配置。 第一步:JDK的安装 下载JDK安装包,网址:Oracle官方网站 双击运行安装包,按照提示安装JDK。 配置环境变量,将JDK的bin目录加入系统环境变量中。如下: 属性 -&…

    Java 2023年5月23日
    00
  • java进行error捕获和处理示例(java异常捕获)

    Java异常获取及处理示例 在Java程序开发过程中,难免会遇到各种异常情况,为避免异常程序的崩溃并使程序更加健壮,Java提供了异常处理机制。 异常基本概念 Java中异常指的是程序运行时错误信息,可以分为三种: 可检查异常(Checked Exceptions): 由Java提供的异常类派生而来,程序在编译阶段就必须明确如何处理这类异常,否则编译器会提示…

    Java 2023年5月27日
    00
  • 解决BeanUtils.copyProperties不支持复制集合的问题

    当使用BeanUtils.copyProperties方法进行对象属性复制时,如果目标对象属性中存在集合类型,会出现无法复制集合中数据的问题。这个问题可以通过使用BeanUtils.copyProperties的另一个重载方法来解决,其中重载方法能够进行集合属性的复制。下面详细介绍解决这个问题的完整攻略。 核心思路 解决BeanUtils.copyPrope…

    Java 2023年5月20日
    00
  • Java中常见的编码集问题总结

    Java中常见的编码集问题总结 什么是编码集 编码集是一种翻译表,能将字符集中的字母、数字和符号对应到磁盘或内存中存储的比特序列。不同的编码集使用不同的比特序列来表示相同的字符。 常见的编码集有ASCII、UTF-8、GB2312等。 Java中处理编码集的方法 Java中处理编码集主要使用的是String类和Java的字符编码转换器Charset。 Str…

    Java 2023年5月20日
    00
  • 在java中使用dom4j解析xml(示例代码)

    在Java中,我们可以使用dom4j来解析XML,dom4j是一款流行的XML解析器,它提供了非常方便的API来访问XML文档的各个部分,同时也具有良好的性能和稳定性。 以下是使用dom4j解析XML的完整攻略: 导入dom4j库 在你的Java项目中需要导入dom4j的jar包,可以从dom4j官网下载,或者使用Maven等工具引入。 加载XML文档 将X…

    Java 2023年5月26日
    00
  • Spring中使用atomikos+druid实现经典分布式事务的方法

    Spring是一个非常流行的Java框架,可以用于构建各种类型的应用程序,包括分布式应用程序。在分布式应用程序中,经典的分布式事务是非常重要的,它可以确保整个事务的一致性和完整性。Atomikos和Druid是常用的分布式事务解决方案,它们都有很多优点,例如可靠性、高性能和灵活性等。下面是如何在Spring中使用Atomikos和Druid实现经典分布式事务…

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