当前位置:首页 > 编程问答 >

python中unicode与utf-8的区别是什么

提问时间:2020年05月21日 16:28:55问题被 176 网友关注
共 1 个关于“python中unicode与utf-8有何区别”精选答案
Dr.戴晓啸
推荐于:2020-05-21
最佳回答

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8的编码规则很简单,只有二条:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

下表总结了编码规则,字母x表示可用编码的位。

Unicode符号范围      |        UTF-8编码方式

(十六进制)           |        (二进制)

----------------------+---------------------------------------------

0000 0000-0000 007F | 0xxxxxxx

0000 0080-0000 07FF | 110xxxxx 10xxxxxx

0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx

0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

以汉字“严”为例,演示如何实现UTF-8编码。

已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5。

参考资料

  • Python入门经典出版社:人民邮电出版社 作者:KatieCunningham
  • Python机器学习出版社:机械工业出版社 作者:塞巴斯蒂安
  • python算法教程出版社:人民邮电出版社 作者:赫特兰
  • Python3经典100例(含习题答案)出版社:python学习社区 作者:Mrs.莫建辉
  • Python Cookbook出版社:人民邮电出版社 作者:比斯利
  • 从零开始学Python程序设计出版社:机械工业出版社 作者:吴惠茹,等
  • Python项目开发案例集锦出版社:吉林大学出版社 作者:明日科技
  • 相关问题

  • python3的url编码和解码应用实例01-30
  • python编码的转换知识点总结04-13
  • python迭代器和for循环的区别点整理10-31
  • Python中Qt和wxWidgets区别是什么05-18
  • python中while和for的区别点整理04-23
  • python中read、readline、readlines三者间的区别及用法03-09
  • python2与python3的区别点总结06-13
  • python编译器和解释器有哪些区别02-11
  • 详解Python函数any()和all()的用法和区别09-14
  • 浅析python爬取100与爬10的区别07-05
  • 深入理解Python中的 sort 和 sorted的用法与区别01-28
  • 搞清楚Python中capitalize()与title()的区别03-05
  • 更多答案
    网友NO.630400

    07-11

    python解决js文件utf-8编码乱码问题,这篇文章主要介绍了python解决js文件utf-8编码乱码问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下 html文件中引入js文件,显示乱码! js文件为utf-8 编码(无bom) ,此时只要将js文件转成utf-8 BOM编码就可以解决了 可以使用notepad++转码 也可以使用下面的python代码批量转码 # -*- coding:utf-8 -*- import os,sys import chardet def convert( filename, in_enc = GBK, out_enc=UTF-8 ): try: print(convert + filename) f = open(filename,'rb') content = f.read() result = chardet.detect(content)#通过chardet.detect获取当前文件的编码格式串,返回类型为字典类型 print(result) f.close() coding = result.get('encoding')#获取encoding的值[编码格式] if coding != 'UTF-8-SIG' and coding == 'utf-8……

    网友NO.804677

    08-26

    Python MySQLdb 使用utf-8 编码插入中文数据问题, 最近帮伙计做了一个从网页抓取股票信息并把相应信息存入MySQL中的程序。 使用环境: Python 2.5 for Windows MySQLdb 1.2.2 for Python 2.5 MySQL 4.1.22 在写程序中遇到了些怪的故障。 第一个问题:插入中文失败 这个是由于字符编码问题引起的。MySQL安装时我已经设置为utf8编码,表也是使用utf8编码建立。程序中只要在开头写好#-*- coding: utf-8 -*-,并在设定连接字符串时候写清使用utf8就可以了 conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8")。 设置之后从MySQL中取出的以utf8编码保存的中文也不会发生乱码。 对中文字符串,如:a = "浦发银行",在进行插入操作前做一下编码转换 a = a.decode("gbk").encod……

    网友NO.345987

    08-26

    python解决js文件utf-8编码乱码问题(推荐), html文件中引入js文件,显示乱码! js文件为utf-8 编码(无bom) ,此时只要将js文件转成utf-8 BOM编码就可以解决了 可以使用notepad++转码 也可以使用下面的python代码批量转码 # -*- coding:utf-8 -*- import os,sys import chardet def convert( filename, in_enc = "GBK", out_enc="UTF-8" ): try: print("convert " + filename) f = open(filename,'rb') content = f.read() result = chardet.detect(content)#通过chardet.detect获取当前文件的编码格式串,返回类型为字典类型 print(result) f.close() coding = result.get('encoding')#获取encoding的值[编码格式] if coding != 'UTF-8-SIG' and coding == 'utf-8':#文件格式如果是utf-8的时候,才进行转码 print(coding + " to "+ out_enc +"!") new_content = content.decode(in_enc).encod……

    网友NO.429962

    06-26

    python utf-8编码怎么设置, 当使用Python编程时,编码问题一直很让人头疼,程序中经常会碰到如下错误提示: UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128) 这是由于python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报上面的错误。 对于上面问题,一般有2种处理方法: 方法1: 在python代码开头加上如下代码块: import sys reload(sys) sys.setdefaultencoding('utf8') 这种方法是临时的,只在程序执行时生效,系统默认编码并没有改变。 方法2 python安装时默认编码是ascii,通过sys.getdefaultencoding()可以查看默认编码。为了一次性解决问题,我们可以修改python的默认编码。具体操作如下:……

    <
    1
    >

    Copyright 2018-2020 www.xz577.com 码农之家

    版权投诉 / 书籍推广 / 赞助:520161757@qq.com

    idea注册码