Python Unicode编码之UTF-8编码

一、UTF-8编码简介

  UTF-8就是在互联网上使用最广的一种unicode的实现方式。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

二、UTF-8编码规则  

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

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

          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编码实例

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

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

时间: 2024-10-22 03:13:13

Python Unicode编码之UTF-8编码的相关文章

python的u'字符串"(字符编码):字符串前有u,表示字符串以unicode格式存储

举个例子 >>> s = u'\u6ce8\u91ca' >>> s u'\u6ce8\u91ca' >>> print s 注释 >>> print type(s) <type 'unicode'> >>> print s.encode('gbk') 注释 字符串前加u表示为unicode编码,而当前文本的unicode编码 可以设定, 比如utf-8编码就是第一行加上: # -*- coding: u

Python编程(三)字符编码与文件处理

计算机要想工作必须通电,也就是说'电'驱使计算机干活,而'电'的特性,就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而编程的结果说白了只是一堆字符,也就是说我们编程最终要实现的是:一堆字符驱动计算机干活 所以必须经过一个过程: 字符--------(翻译过程)------->数字 这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码 字符编码 :字符-->二进制数字的标准阶段一:ASCII:一个Bytes代表一

python 第二章 二进制运算、字符编码、数据类型

>>> len(s.ljust(50,'*'))50>>> 1.二进制转换: bin(342) '0b101010110' 2.ASCII码与二进制: 每一个ASCII码都是用8位表示,ASCII码一共有255个.每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位,8位表示一个字节. 8bit = 1bytes(字节),最小的存储单位,1bytes缩写为1B 1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1

Python 学习之进制与编码

进制 日常生活中,我们最熟悉的数据就是十进制计数.它的数值部分由十个不同的数字符号0.1.2.3.4.5.6.7.8.9来表示,我们把这些数字符号叫做数码,表示十种不同的状态.数码处于不同的位置(或数位)代表的意义是不同的. 二进制数的含义 二进制数的每个数位只可能取两个不同的数码"0"和"1",而且是"逢二进一".为了熟悉二进制数的表示,我们就几个简单的数字,列出二进制数与其对应的十进制数.正如十进制数据中最大的数码是9一样,在二进制数据中最大

Python 学习第四弹:编码问题(转载)

关于python的编码问题一直以来不得解,终于在今天从这篇博文中明白了. 原文地址: http://nedbatchelder.com/text/unipain.html 译文地址:http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue5/unipain.html 译者: yudun1989 实用Unicode编程指南 这是我在 Pycon2012 所做的演讲.你可以阅读本页的幻灯片和文字,或者直接在浏览器中打开 演示 ,或者

Python&MySQL操作过程中遇到的编码问题

对于Python字符编码的理解 之前整理了一部分,这次主要是设计到数据库操作的. 下面是一些编码方面的概念和原理,以条目方式整理: CREATE DATABASE IF NOT EXISTS db_name DEFAULT CHARSET utf8 COLLATE utf8_general_ci; DEFAULT CHARSET是设置默认字符编码集,也就是数据在库内从存储编码,我的理解是在存储这个层面上的,如果SQL命令是以gbk方式传输数据的(cur.execute('SET NAMES ut

Python : 熟悉又陌生的字符编码(转自Python 开发者)

Python : 熟悉又陌生的字符编码 字符编码是计算机编程中不可回避的问题,不管你用 Python2 还是 Python3,亦或是 C++, Java 等,我都觉得非常有必要厘清计算机中的字符编码概念.本文主要分以下几个部分介绍: 基本概念 常见字符编码简介 Python 的默认编码 Python2 中的字符类型 UnicodeEncodeError & UnicodeDecodeError 根源 基本概念 字符(Character) 在电脑和电信领域中,字符是一个信息单位,它是各种文字和符号

【python】数据类型,字符串和编码

python笔记,写在前面:python区分大小写1.科学计数法,把10用e代替,1.23x10·9就是 1.23e9                            或者 0.00012就是1.2e-42.转义字符 \ 或者 r''[相当于C#里的@]r代表 raw string里边的\不转义   要表示  \   就要写成 \\   换行符 可以用 '''内容''' ,也可以前面加上r显示          例子:               print('''1           

Unicode 字符集与它的编码方式

正式内容開始之前,我们先来了解一个基本概念,编码字符集. 编码字符集:编码字符集是一个字符集,它为每个字符分配一个唯一数字.Unicode 标准的核心是一个编码字符集,字母"A"的编码为 004116 和字符""的编码为 20AC16.Unicode 标准始终使用十六进制数字,并且在书写时在前面加上前缀"U+",所以"A"的编码书写为"U+0041". 1 ASCII码 我们知道,在计算机内部,全部的信息

Python中的字符串与字符编码

原文地址:点击这里 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章.有的人云亦云,也有的写得很深入.近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字.一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的