Python Unicode编码之基础知识

一、什么是Unicode  

  在Unicode之前,人们使用ASCII码,即每个英文字符都是以7位二进制数的方式存储在计算机内,其范围是32-126,所以ASCII码字符只能表示95个可打印字符;虽然随后将位数扩展值了8位,但依旧最多只能表示233个字符,对于成千上万的非欧洲语系的语言来说有极大的限制。

  Unicode通过使用一个或多个字节来表示一个字符的方法,突破了ASCII的限制,可以表示超过90000个字符。

二、怎么使用Unicode

  从1.6版本起引进了Unicode字符串支持,用来转换多种双字节字符的格式、编码以及操作管理。为了让Unicode和ASCII码值的字符串看起来尽可能的相像,Python的字符串从原来的简单数据类型改为真正的对象,即ASCII字符串成了StringType型,而Unicode字符串成了UnicodeType型。

  内建的str()函数和chr()函数并没有升级成可以处理Unicode。它们只能处理常规的ASCII编码字符串。如果一个Unicode字符串被作为参数传递给了str()函数,它会先被转换成ASCII字符串,然后再交个str()函数;如果Unicode字符串中包含任何不被ASCII字符串支持的字符,会导致str()函数报异常。

  Python默认所有字面上的字符串都用ASCII编码,可以通过在字符串前面加一个‘u‘前缀的方式声明Unicode字符串;也可以使用内建的unicode()和unichar()函数把任何Python的数据类型转换成Unicode字符串,如果是对象,并且该对象定义了‘__unicode__()‘方法,还可以把该对象转换成相应的Unicode字符串。

三、Unicode在实际应用中的注意事项

  1.程序中出现字符串时一定要加个前缀‘u‘;

  2.用unicode()函数代替str()函数;

  3.尽量不要使用过时的string模块;

  4.不到必须时不要在你的程序里编解码unicode字符,只有在你写入文件或者数据库或者网络时,才调用encode()函数;相应的在读取数据的时候才调用decode()函数;

  5.Python 标准库里面的绝大多数模块都是兼容Unicode的,除了pickle模块,该模块只支持ASCII字符串,因此在使用时要小心;

  6.如果你的程序里使用第三方模块,要确保各模块均能统一使用Unicode;

  7.在每个应用开发前,先要考虑使用的语言,然后明确统一的编码方式;

时间: 2024-11-08 17:07:38

Python Unicode编码之基础知识的相关文章

深入理解python(一)python语法总结:基础知识和对python中对象的理解

用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会把数据结构的实现.函数调用过程.以及python虚拟机的基本原理根据源码解释下. 当然限于笔者只是一个弱鸡,,,如内容有疏漏的地方或者是一些错误,希望看到的大佬不吝赐教. 第一部分 python语法总结 当然如果对python语法还是一无所知的同学请移步缪雪峰或者菜鸟教程等学习网站看一遍再过来,,,

VII Python(4)基础知识

VIIPython(4)基础知识 python函数: 函数是为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构: 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件: 函数用于将相关功能打包并参数化: python提供很多内置函数,在python中可创建四种函数:全局函数(直接定义在模块中):局部函数(嵌套于其它函数中):lambda匿名函数(表达式,灵活性强):方法(定义在类中的函数,与特定的数据类型关联的函数,并且只能与数据类型关联一起使用): 语法: def funct

【转载】不得不知道的Python字符串编码相关的知识

原文地址:http://www.cnblogs.com/Xjng/p/5093905.html 开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII character 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128),又例如显示乱码.由于之前不知道编码的原理,遇到这些情况,就只能不断的用各种编码decode和encode.....今天整理一个pyt

python【1】-基础知识

1.简介 python是一种解释性的.面向对象的.带有动态语义的高级程序设计语言. 廖雪峰网站:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 下载python:https://www.python.org/downloads/ 交互式python解释器:IDLE python是通过缩进来组织代码段的,而不像c#中的大括号.一般推荐使用四个空格作为缩进. 2.表达式 除法: 默认

(一)Python 学习第一天--基础知识,列表

1. .pyc文件 .pyc文件:在python3中,当模块运行时会自动生成在_pycache_文件夹中,其中c为compiled的缩写. Python是一门现编译后解释的语言,在运行时首先寻找.pyc文件,若没有先到内存先编译再解释,生成.pyc文件.如果源文件发生改动,则先对比对应的.pyc文件与源文件的时间戳. 2.数据类型 在Python2中当值大于2^64位时,为long型:Python3不存在long型,所有都为int型. 3.三元运算符 result = 值1  if   条件  

VII Python(6)基础知识(re正则表达式)

正则表达式RE(regular expression)是一种小型的.高度专业化的编程语言,肉嵌在python中,通过re模块实现: 当发现有问题用正则表达式可解决时,于是将面临两个问题: RE模式被编译成一系统的字节码,再由匹配引擎(C写的)执行,RE语言相对小型和受限(功能有限,并非所有字符串处理都能用RE完成): re模块提供了顶级函数调用,常用的有:findall().sub().match().search().subn().split(): In [1]: import re In [

VII Python(3)基础知识

表达式和语句: 常用的表达式操作符: 算术运算:+,-,*,/,//截断除法,%,**幂运算 逻辑运算:x or y,xand y,not x 比较运算:<,>,==,<=,>=,!= 一元运算:-x,+x,~x按位取反 三元选择表达式:x if yelse z 成员关系运算:x iny,x not in y 位运算:x | y,x<< y,x >> y,x & y,x ^ y 索引和分片:x[i],x[i:j],x[i:j:stride] 调用:x

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.剩下的没有提及的二进

Python Unicode编码

使用技巧 事实上,只要遵守以下规则,可以规避90%由于Unicode字符串处理引起的bug,剩下的10%通过python的库和模块能够解决. 程序中出现字符串时一定要加个前缀u. 不要用str()函数,用unicode()代替. 不要用过时的string模块--如果传给它的是非ASCII字符,它会把一切搞砸. 不到必须时不要在你的程序里面解码unicode字符.只在你要写入文件或数据库或者网络时,才调用encode()函数:相应地,只在你需要把数据读回来的时候才调用decode()函数. 从现实