首页 > 其他分享 >字符编解码

字符编解码

时间:2023-07-01 14:12:59浏览次数:23  
标签:编解码 UTF 编码 解码 Unicode 字符 ASCII

什么是字符编码 & 解码

字符编码

字符编码是将字符转换为二进制表示的过程。它是为了能够在计算机系统中处理和存储文本而创建的一种方式。由于计算机只能理解二进制数据,需要将字符转换为相应的二进制编码形式才能进行处理。

字符解码

字符解码是将二进制数据转换回字符的过程。它是将存储在计算机中的二进制数据转换为可读的字符形式。解码将二进制数据重新映射到对应的字符,使得人类可以理解和处理这些字符。

总结

Python 使用 Unicode 字符编码作为内部表示,这使得它可以处理多种语言和字符集。

在 Python 中,字符编码和解码是通过字符串对象的编码和解码方法实现的:

  • 编码:在字符串对象上调用 encode() 方法将字符串编码为指定的编码类型。它接受一个参数,即目标编码。例如,str.encode(encoding)
  • 解码:在字节对象上调用 decode() 方法将字节解码为字符串。它接受一个参数,即源编码类型。例如,bytes.decode(encoding)

例如,如果要将字符串编码为 UTF-8 编码的字节序列,可以使用以下方式:

1 # 1. 编码
2 text = "Hello, 你好"
3 encoded_text = text.encode("UTF-8")
4 print(encoded_text)  # b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd'

字符串对象 text 被编码为 UTF-8 编码的字节序列,并通过 encode() 方法进行了转换。

1 # 2. 解码
2 bytes_text = b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd'
3 decoded_text = bytes_text.decode("UTF-8")
4 print(decoded_text)  # Hello, 你好

在示例中,字节对象 bytes_text 被解码为 UTF-8 编码的字符串,并通过 decode() 方法进行了转换。

总之:字符编码是将字符转换为二进制表示的过程,而字符解码是将二进制数据转回字符的过程。Python 提供了编码和解码方法,以便处理和转换字符与字节之间的转换。

字符编码的类型

 

ASCII 

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种最早的字符编码标准,通过使用 7 位二进制(2的7次方即128,范围:0-127)表示来表示常用的字符。

在 Python 中,内置函数 ord() 可以用来获取一个字符的 ASCII 值,而 chr() 可以用来将 ASCII 值转换为字符。

以下是关于 ASCII 编码的最佳实践和示例:

1. ASCII 范围:ASCII 编码涵盖了 0 到 127 的范围,其中包含了常用的英文字母、数字和一些特殊字符。超出这个范围的字符需要使用其他编码(如 Unicode)来表示。          

ASCII 编码的范围是从 0 到 127。这个范围包含了许多常用的英文字母、数字、标点符号和一些控制字符。

    下面是 ASCII 编码范围的几个子集:

      • 0-31:控制字符,如换行符、回车符、制表符等。
      • 32-47:特殊字符,如空格、斜杠、句点等。
      • 48-57:十进制数字 0-9。
      • 65-90:大写字母 A-Z。
      • 97-122:小写字母 a-z。
      • 91-96:其他特殊字符,如方括号、反引号等。
      • 123-127:其他特殊字符,如大括号、竖线、波浪符等。

2. ASCII 转换:要将一个字符转换为 ASCII 值,可以使用内置函数 ord()。  

1 char = 'A'
2 ascii_value = ord(char)
3 print(ascii_value)  # 65

在这个示例中,字符 'A' 被转换为相应的 ASCII 值,即 65

 

3. ASCII 转换:要将一个 ASCII 值转换为字符,可以使用 chr() 函数。

1 ascii_value = 65
2 char = chr(ascii_value)
3 print(char)  # A

在这个示例中,ASCII 值 65 被转换回相应的字符 'A'。

 

Unicode 

Unicode 是一种字符编码标准,包含了几乎所有世界上使用的字符,无论是常见字符还是罕见字符。Unicode 使用更多的位数来表示字符,从而可以表示更多的字符。

Unicode 编码的总结、最佳实践和示例:

  1. Unicode 编码范围:Unicode 编码的范围很大,它的编码空间可以容纳约 1.1 百万个字符。每个字符在 Unicode 中都被分配了一个唯一的码点(code point),用来表示该字符。

  2. Unicode 转换:在 Python 中,可以使用 ord() 函数获取一个字符的 Unicode 码点,使用 chr() 函数将 Unicode 码点转换为字符。

   

1 char = '

标签:编解码,UTF,编码,解码,Unicode,字符,ASCII
From: https://www.cnblogs.com/allenxx/p/17518058.html

相关文章

  • mysql 联合表查询从表即使有索引依然ALL的一个原因-索引ALL解决,字符编码方式不一致导
    mysql联合表查询从表即使有索引依然ALL的一个原因-索引ALL解决,字符编码方式不一致导致全表搜索那就是主表和从表的关联字段的编码方式不一样!!!产生的现象:解决之后,正确的使用了t2.order_noref索引,而不是ALL检查mysql主体编码方式,是否由于后来新建的表的关联字段和之前的主表的......
  • 位,字节,字符
    位,字节,字符位(bit):是计算机内部储存的最小单位字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B来表示1B(byte,字节)=8bit(位)字符:指计算机中使用的字母,数字,字和符号1bit表示1位1B=8b1KB=1024B1M=1024KB1G=1024MJava中单个字符用单引号,字符串用双引号......
  • 字符串在货币、日期、精度的处理
    1.区域设置--locale模块的setlocale函数区域设置是一个标识特定地理、文化和语言的系统参数。它影响如日期和时间格式、货币和数字格式以及其他地域相关的操作。在Python中,使用 locale.setlocale() 函数可以设置区域设置来适应不同的地区和语言要求。该函数的语法为:local......
  • 2023ACM暑假训练day 6-字符串
    目录DAY6字符串训练情况简介题DAY6字符串训练地址:传送门训练情况简介题题意:思路:......
  • 字符串格式化
    1.什么是字符串格式化?就是把字符串弄成⼀定的格式(往往就是留个位置,往里面填值)这个位置往往是格式符、占位符。2.字符串常见的3种格式化方式2.1格式符+%+变量/表达式2.2f'{变量或表达式}'也叫 f-strings 2.3 字符串对象的 format() 方法来格式化字符串3.格式......
  • [转]前台传递给后台的JSON字符串中的引号 “” 在JAVA后台被转义为 &quot
    1、问题:前台数据,JSON字符串带有引号“”,数据被传递到后台,引号被转义为&quot,后台无法解析。前台数据如下:正常后台数据如下:大部分正常,只有JSON字符串中的“”被转义为&quot2、解决:方法一:使用apache的lang包里的方法StringappJson=StringEscapeUtils.un......
  • Oracle CONNECT BY根据特定字符拆分字符串
    1、一行SELECTT.ID,REGEXP_SUBSTR(T.VALS,'[^,]+',1,LEVEL)ASVALFROM(SELECT'101'ID,'A,B'VALSFROMDUAL)TCONNECTBYLEVEL<=REGEXP_COUNT(T.VALS,'[^,]+');2、多行2-1、如果ID唯一不重复:SELECTT.ID,REGEXP_SUBSTR......
  • Netty-TCP 01.编解码
    本文是使用Netty开发一个简单的TCP通讯(聊天)应用程序的第【1】部分,主要介绍编解码实现。定制协议一般来说,开发TCP通讯应用程序,定制通讯协议是不可避免的,这里以一种最简单的协议为例,假设一个TCP通讯数据包,包含三部分:[type][size][content]type:数据包类型(长度为一个字节,即1个by......
  • [代码]如何分析XML字符串(LINQ to XML)
    此代码演示如何使用XElement.Parse()方法分析XML字符串,并创建XElement元素。从编程效率来讲这种做法可能效率非常的高,但从代码的执行效率来看,还是使用函数构造的方式创建XML树的效率高一点。示例代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSys......
  • Delphi宽字符批量去除#0方法
    functionDelCRLF(src:String):String;varn,M:Integer;beginSetLength(Result,Length(src));n:=0;form:=1toLength(src)doif(src[M]=#0)thencontinueelsebeginInc(n);Result[n]:=src[M];end;SetLengt......