Unicode字符串可以用多种方式编码为普通字符串, 依照你所选择的编码(encoding):Toggle line numbers1 #将Unicode转换成普通的Python字符串:"编码(encode)"

2 unicodestring = u"Hello world"

3 utf8string = unicodestring.encode("utf-8")4 asciistring = unicodestring.encode("ascii")5 isostring = unicodestring.encode("ISO-8859-1")6 utf16string = unicodestring.encode("utf-16")7

8

9 #将普通的Python字符串转换成Unicode: "解码(decode)"

10 plainstring1 = unicode(utf8string, "utf-8")11 plainstring2 = unicode(asciistring, "ascii")12 plainstring3 = unicode(isostring, "ISO-8859-1")13 plainstring4 = unicode(utf16string, "utf-16")14

15 assert plainstring1==plainstring2==plainstring3==plainstring4

讨论 Discussion

If you find yourself dealing with text that contains non-ASCII characters, you have to learn about Unicode梬hat it is, how it works, and how Python uses it.

如果你发现自己正在处理包含非ASCII码字符的文本, 你必须学习Unicode,关于它是什么,如何工作,而且Python如何使用它。

Unicodeis a big topic.Luckily, you don't need to know everything about Unicode to be able to solve real-world problems with it: a few basic bits of knowledge are enough.First, you must understand the difference between bytes and characters.In older, ASCII-centric languages and environments, bytes and characters are treated as the same thing.Since a byte can hold up to 256 values, these environments are limited to 256 characters.Unicode, on the other hand, has tens of thousands of characters.That means that each Unicode character takes more than one byte, so you need to make the distinction between characters and bytes.

Unicode是一个大的主题。幸运地,你并不需要知道关于Unicode码的每件事,就能够用它解决真 实世界的问题: 一些基本知识就够了。首先,你得了解在字节和字符之间的不同。原先,在以ASCII码为中心的语言和环境中,字节和字符被当做相同的事物。由于一个字节只 能有256个值,这些环境就受限为只支持 256个字符。Unicode码,另一方面,有数万个字符,那意谓着每个Unicode字符占用多个字节,因此,你需要在字符和字节之间作出区别。

Standard Python strings are reallybyte strings, and a Python character is really a byte.Other terms for the standard Python type are "8-bit string" and "plain string.",In this recipe we will call them byte strings, to remind you of their byte-orientedness.

标准的Python字符串确实是字节字符串,而且一个Python字符真的是一个字节。换个术语,标准的 Python字符串类型的是"8位字符串(8-bit string)"和"普通字符串(plain string)". 在这一份配方中我们把它们称作是字节串(bytestrings), 并记住它们是基于字节的。

Conversely, a Python Unicode characteris an abstract object big enough to hold the character, analogous to Python's long integers.You don't have to worry about the internal representation;the representation of Unicode characters becomes an issue only when you are trying to send them to some byte-oriented function, such as the write method for files or the send method for network sockets.At that point, you must choose how to represent the characters as bytes.Converting from Unicode to a byte string is called encoding the string.Similarly, when you load Unicode strings from a file, socket, or other byte-oriented object, you need to decode the strings frombytes to characters.

相反地,一个Python Unicode码字符是一个大到足够支持(Unicode)字符的一个抽象对象, 类似于Python中的长整数。 你不必要为内在的表示担忧; 只有当你正在尝试把它们传递给给一些基于字节的函数的时候,Unicode字符的表示变成一个议题, 比如文件的write方法或网络套接字的send 方法。那时,你必须要选择该如何表示这些(Unicode)字符为字节。从Unicode码到字节串的转换被叫做编码。同样地,当你从文件,套接字或其他 的基于字节的对象中装入一个Unicode字符串的时候,你需要把字节串解码为(Unicode)字符。

There are many ways of converting Unicode objects tobyte strings, each of which is called an encoding.For a variety of historical, political, and technical reasons, there is no one "right" encoding.Every encoding has a case-insensitive name, and that name is passed to the decode method asa parameter. Here are a few you should know about:

将Unicode码对象转换成字节串有许多方法, 每个被称为一个编码(encoding)。由于多种历史的,政治上的,和技术上的原因,没有一个"正确的"编码。每个编码有一个大小写无关的名字,而且那一个名字被作为一个叁数传给解码方法。这里是一些你应该知道的:

The UTF-8 encoding can handle any Unicode character.It is also backward compatible with ASCII, so a pure ASCII file can also be considered a UTF-8 file, and a UTF-8 file that happens to use only ASCII characters is identical to an ASCII file with the same characters.This property makes UTF-8 very backward-compatible, especially with older Unix tools.UTF-8 is far and away the dominant encoding on Unix.It's primary weakness is that it is fairly inefficient for Eastern texts.

UTF-8 编码能处理任何的Unicode字符。它也是与ASCII码向后兼容的,因此一个纯粹的ASCII码文件也能被考虑为一个UTF-8 文件,而且一个碰巧只使用ASCII码字符的 UTF-8 文件和拥有同样字符的ASCII码文件是相同的。 这个特性使得UTF-8的向后兼容性非常好,尤其使用较旧的 Unix工具时。UTF-8无疑地是在 Unix 上的占优势的编码。它主要的弱点是对东方文字是非常低效的。

The UTF-16 encoding is favored by Microsoft operating systems and the Java environment.It is less efficient for Western languages but more efficient for Eastern ones.A variant of UTF-16 is sometimes known as UCS-2.

UTF-16 编码在微软的操作系统和Java环境下受到偏爱。它对西方语言是比较低效,但对于东方语言是更有效率的。一个 UTF-16 的变体有时叫作UCS-2。

The ISO-8859 series of encodings are 256-character ASCII supersets.They cannot support all of the Unicode characters;they can support only some particular language or family of languages.ISO-8859-1, also known as Latin-1, covers most Western European and African languages, but not Arabic.ISO-8859-2, also known as Latin-2,covers many Eastern European languages such asHungarian and Polish.

ISO-8859编码系列是256个字符的ASCII码的超集。他们不能够支援所有的Unicode码字符; 他们只能支援一些特别的语言或语言家族。ISO-8859-1, 也既Latin-1,包括大多数的西欧和非洲语言, 但是不含阿拉伯语。ISO-8859-2,也既Latin-2,包括许多东欧的语言,像是匈牙利语和波兰语。

If you want to be able to encode all Unicode characters, you probably want to use UTF-8.You will probably need to deal with the other encodings only when you are handed data inthose encodings created by some other application.

如果你想要能够编码所有的Unicode码字符,你或许想要使用UTF-8。只有当你需要处理那些由其他应用产生的其它编码的数据时,你或许才需要处理其他编码。

python unicode转字符串_Python: 在Unicode和普通字符串之间转换相关推荐

  1. python unicode转中文_Python将Unicode代码转换为中文字符的几种方法,python,unicode,编码,汉字...

    Python中有两种默认的字符串:str和unicode.在Python中一定要注意区分"Unicode字符串" 和"unicode对象"的区别.后面所有的&q ...

  2. python输入数字字符串_Python笔记—基本数据类型—数字字符串

    数字 int #整型 所有的功能,都在int里 a = 123v= a.bit_length() #软件自带函数联想 print(v)-int 将字符串转换成数字 a= '123' print(typ ...

  3. python判断字符串中包含某个字符串_Python中最常用的字符串方法!

    译 / 忧郁的红秋裤 字符串是字符序列.Python中内置的string类代表基于Unicode国际字符集的字符串.除了Python中常见的操作外,字符串还有一些专属于它们的附加方法.下图显示了所有这 ...

  4. python rfind函数用法_Python语法速查:字符串格式简单处理、子串查找与判断方法?...

    这是一篇python基础知识分享型文章,对学习python感兴趣的朋友们可以仔细看看 字符串常用方法 Python3中,字符串全都用Unicode形式,所以省去了很多以前各种转换与声明的麻烦.字符串属 ...

  5. python练习题百度云_Python专项基础练习(字符串)练习题

    1. 字符串练习题 1.1.字符串内置方法练习 在交互式解释器中完成下列题目将字符串 "abcd" 转成大写 计算字符串 "cd" 在 字符串 "ab ...

  6. python中如何连接两个字符串_python中5种连接字符串的方法

    字符串是Python中常用的数据类型,在开发过程中可以对字符创进行截取并与其他字符创进行连接.本文为大家介绍了5种连接字符串的方法. 1.加号 如果有其他编程语言开发经验的人,肯定知道很多语言里面是用 ...

  7. python输出数字和字符串_Python中的数值和字符串

    一.Python中的数值 python中的数值分为三类:整型.浮点型和复数 1.整型: python3的整型支持各种类型的整数: python的整数值有4种表达形式: a.十进制形式,最普通的整数就是 ...

  8. python距离向量路由算法_python算法练习——动态规划与字符串的编辑距离

    动态规划与字符串的编辑距离 动态规划 动态规划(dynamic programming)是解决多阶段决策问题常用的最优化理论,该理论由美国数学家Bellman等人在1957年提出,用于研究多阶段决策过 ...

  9. c字符串截取一部分字符串_Python如何截取一段字符串?

    如果想截取字符串中的一段字符就需要用到切片. 切片方法适用于字符串.列表.元组 ·切片使用索引值来限定范围,从一个大的字符串中切出小的字符串: ·列表和元组都是有序的集合,都能够通过索引值获取到对应的 ...

最新文章

  1. php v5.,PHP V5.3 中的新特性,第 5 部分- 从 PHP V5.2 升级到 PHP V5.3
  2. PHP - NetBeans中调试PHP
  3. Android读取/dev/graphics/fb0 屏幕截图
  4. 手把手教你Chrome浏览器安装Postman(含下载云盘链接)【转载】
  5. RabbitMQ之队列优先级
  6. 【JAVA】Maven profiles控制多环境数据源日志打包(转载)
  7. jQuery Mobile中单选按钮radio的data-*选项
  8. 安装多个mysql实例(debian版本)
  9. 单机安装DynamicsAX2012R3VM
  10. 通过对比文件md5值,实现对文件的替换
  11. 超简单的windows发包工具—小兵以太网测试仪
  12. sudo rosdep init 出现 ERROR: cannot download default sources list from:
  13. vscode配置运行php项目完整版
  14. 【文献阅读】Optimistic Bull or Pessimistic Bear: Adaptive Deep Reinforcement Learning for Stock Portfolio
  15. 一个简单的全排列算法
  16. MacBooster 7 mac 破解版永久激活方法无需激活码
  17. android高德地图多个mark点击,Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗...
  18. 基于三维地图的可视化工厂优势
  19. linux samba 实验 Windows无法访问\\ 请检查名称的拼写。否则,网络可能有问题。 就一个小问题!!已解决!!!
  20. Java抽象类和接口中可以有成员变量吗?

热门文章

  1. 卖了个 Chrome 插件,赚了几千美金,但是很后悔!
  2. cmd命令行下怎样切换目录
  3. python的图形用户界面
  4. C语言中的循环语句(while、dowhile、for)
  5. neat download manager是什么?多线程下载工具 NeatDownloadManager
  6. WOW平衡性设计理念
  7. 【数据结构】物流运输(最短路DP)
  8. Spritekit中如何判断触摸点击的精灵
  9. can和could的用法_情态动词can和could用法详解
  10. ez_website