首页 > 编程语言 >使用python来对字符编码序列进行互转

使用python来对字符编码序列进行互转

时间:2023-10-12 12:33:24浏览次数:46  
标签:编码序列 gb18030 字节 python bytes 序列 unicode 互转 encode

排查字符集问题时,有的时候发生乱码不知道如何生成的字符,此时就需要通过字节序列来判断该字符是什么。

已知utf8字节序列时,转换为unicode或者gb18030字节序列:

>>> a = b'\xef\xbc\xa1' # 此时a是一个bytes对象
>>> b = a.decode("utf8") #此时b是一个str对象,内部是unicode的编码字节序列,其实是全角的字母字符A
>>> b
'A'
>>> b.encode('unicode_escape') #经过encode函数得到一个bytes对象,它是一个字节序列,长度为6, 第一个是\, 第2个是u, 第3个是f, 以此类推
b'\\uff21'
>>> b.encode("gb18030") #经过encode函数得到一个bytes对象,它是一个字节序列,长度为2,第一个是\xa3, 第2个是\xc1
b'\xa3\xc1'

已知gb18030字节序列时,转换为unicode或者utf8字节序列:

>>> a = b'\xa3\xc1' # 此时a是一个bytes对象
>>> b = a.decode("gb18030") #此时b是一个str对象,内部是unicode的编码字节序列,其实是全角的字母字符A
>>> b
'A'
>>> b.encode('unicode_escape') #经过encode函数得到一个bytes对象,它是一个字节序列,长度为6, 第一个是\, 第2个是u, 第3个是f, 以此类推
b'\\uff21'
>>> b.encode("utf8") #经过encode函数得到一个bytes对象,它是一个字节序列,长度为3,第一个是\xef, 第2个是\xbc, 第3个是\xa1
b'\xef\xbc\xa1'

已知unicode字节序列时,转换为gb18030或者utf8字节序列:

>>> a = b'\\uff21' # 此时a是一个bytes对象
>>> b = a.decode("unicode_escape") #此时b是一个str对象,内部是unicode的编码字节序列,其实是全角的字母字符A
>>> b
'A'
>>> b.encode("gb18030") #经过encode函数得到一个bytes对象,它是一个字节序列,长度为2,第一个是\xa3, 第2个是\xc1
b'\xa3\xc1'
>>> b.encode("utf8") #经过encode函数得到一个bytes对象,它是一个字节序列,长度为3,第一个是\xef, 第2个是\xbc, 第3个是\xa1
b'\xef\xbc\xa1'

标签:编码序列,gb18030,字节,python,bytes,序列,unicode,互转,encode
From: https://www.cnblogs.com/lifewithlight/p/17759234.html

相关文章

  • 【Python&语义分割】Segment Anything(SAM)模型全局语义分割代码+掩膜保存(二)
    ​ 我上篇博文分享了SegmentAnything(SAM)模型的基本操作,这篇给大家分享下官方的整张图片的语义分割代码(全局),同时我还修改了一部分支持掩膜和叠加影像的保存。1SegmentAnything介绍1.1概况        MetaAI公司的SegmentAnything模型是一项革命性的技术,该模型能......
  • python模块之sys模块
    sys.argvsys模块是python解释器交互的一个接口该模块提供对解释器使用或维护的一些变量的访问和获取它提供了许多函数和变量来处理python运行时欢姐的不同部分importsysprint(sys.argv)test=sys.argv[1]iftest=="shawn":print("iamshawn")eliftest=="s......
  • 【Python&语义分割】Segment Anything(SAM)模型详细使用教程+代码解释(一)
    ​1SegmentAnything介绍1.1概况        MetaAI公司的SegmentAnything模型是一项革命性的技术,该模型能够根据文本指令或图像识别,实现对任意物体的识别和分割。这一模型的推出,将极大地推动计算机视觉领域的发展,并使得图像分割技术进一步普及化。    论文......
  • 交通标志识别系统python+TensorFlow+算法模型+Django网页+数据集
    一、介绍交通标志识别系统。技术涉及:Python编程语言开发TensorFlow搭建算法模型对数据集进行训练得到一个精度较高的模型文件Django开发网页端界面平台实现对58种交通标志图片进行识别二、效果图片展示三、演示视频and代码视频+代码+介绍:https://s7bacwcxv4.feishu.......
  • python 基础笔记-函数
    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段·。   好处为: 一可以把程序中相对独立的功能模块抽取出来,减少重读代码的编写; 二是将来可以以重复的使用这些功能模块https://www.clw9335.com/zx/index-htm-page-5.html  定义一个函数 你可以定义一......
  • python pyautogui AttributeError: module 'pyscreeze' has no attribute 'locateOnW
    目录pythonpyautoguiAttributeError:module'pyscreeze'hasnoattribute'locateOnWindow'pythonpyautoguiAttributeError:module'pyscreeze'hasnoattribute'locateOnWindow'安装好pyautogui后测试脚本报错如标题这个报错百度查询是版本过高导致......
  • Python word'str'(字符串前缀string prefix)的种类
    Python字符串前缀(Stringprefix) r'string'r'',用法是不会对后方字符串中的转义符进行转义,如: str=r'\n'print(str)#会直接输出\n,并不会输出换行 f'string'f'',用法是对字符进行格式化就和str.format()一样,会对{}进行格式化,如: str=f'你好,{}'......
  • 代码随想录算法训练营第一天(python) | 704. 二分查找、27. 移除元素。
    Leetcode704二分查找题目链接:704二分查找关键点思路:1、是否要进入到while部分的代码是left<=right还是left<right,看[left,right]是否是合法区间.例如[1,1]是合法区间,取<=;[1,1)非合法区间,取<。2、缩小区间时,考虑边界是否已经比较过。左闭右闭区......
  • Python 集合(Sets)1
    集合集合用于在单个变量中存储多个项。集合是Python中的4种内置数据类型之一,用于存储数据集合,其他3种是列表(List)、元组(Tuple)和字典(Dictionary),它们都具有不同的特性和用途。集合是一种无序、不可更改(*)、无索引的集合。创建一个集合集合用大括号表示。示例,创建一个集合:......
  • 百度飞桨应用实战暨《Python小白逆袭大神》课程学习记录及心得
    课程介绍本次课程是百度深度学习7日打卡第六期,由飞桨深度学习学院的老师进行授课。课程定位:带领零基础学员从Python进入人工智能领域,即使不懂人工智能也能学会。课程形式:B站直播加回放,微信群答疑课程亮点:使用源于产业实践的开源深度学习平台飞桨(PaddlePaddle)简单学习深度学习......