摘要:根本原因字符串在内部的表示是编码,因此,在做编码转换时,通常需要以作为中间编码,即先将其他编码的字符串解码成,再从编成另一种编码。引用的中文编码问题
根本原因:
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode 作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编(encode) 成另一种编码。但是,Python 2.x的默认编码格式是ASCII,就是说,在没有指定Python源码编码 格式的情况下,源码中的所有字符都会被默认为ASCII码。也因为这个根本原因,在Python 2.x中 经常会遇到UnicodeDecodeError或者UnicodeEncodeError的异常。
常见的几种编码异常
当然,除了上面列出的几种出现异常的情况之外还有很多可能出现异常的例子,这里就不在一一
说明了。
最后分享一个终极原则:
decode early, unicode everywhere, encode late,即:在输入或者声明字符串的时候, 尽早地使用decode方法将字符串转化成unicode编码格式;然后在程序内使用字符串的时候统一使用 unicode格式进行处理,比如字符串拼接、字符串替换、获取字符串的长度等操作;最后,在输出字符 串的时候(控制台/网页/文件),通过encode方法将字符串转化为你所想要的编码格式,比如utf-8等。
引用WuXianglong的python中文编码问题
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/37555.html
摘要:值得注意的是,有的编码方案不一定能表示某些信息,这时编码就会失败,比如就不能用来表示中文。数组的每一项是一个字节,用来表示。所以对于字符串来说,其长度等于编码后字节的长度。所以,让来编码解码中文,就超出了其能力范围。 在人机交互之字符编码 一文中对字符编码进行了详细的讨论,并通过一些简单的小程序验证了我们对于字符编码的认识。但仅了解这篇文章的内容,并不能帮我们在日常编程中躲过一些字符编...
摘要:之痛原文地址译者校正实用编程指南这是我在所做的演讲。事实一和二共同造成了计算机设备结构与世界人类需求的一个冲突。就是为了解决之前的老的字符集问题。值意味着,失败时将会返回一个标准的替代字符。将使用进行了解码。 Unicode之痛原文地址: http://nedbatchelder.com/text...译者: yudun1989 校正: sicklife实用Unicode编程指南这是...
摘要:而他们的中文释义,就是对新手的最大陷阱编码。而码,也就是美国信息交换标准码,年发布,位字符编码中影响最大的一种。 编码,还是编码! python2的直钩——编码异常 当你用python打开一篇中文文档,准备读取里面的数据开始实验...当你处理好你的数据,打算打印出易于阅读的结果给boss检查...甚至当你刚刚开始编写自己的代码,就写了一句话... text = 什么鬼 只要你开始运行自...
摘要:,,等属于不同的字符集,转换编码就是在它们中的任意两者间进行。一般个人用的电脑上控制台基本上都是编码的,但运维的机器上基本全是,中文的时候就会有酸爽的问题。 总结总结,本文仅适用于python2.x 默认编码与开头声明 首先是开头的地方声明编码 # coding: utf8 这个东西的用处是声明文件编码为utf8(要写在前两行内),不然文件里如果有中文,比如 a = 美丽 b = u美...
摘要:关于解决乱码问题的终极解决方案有个特别好玩的现象,当我们为了编码头疼的时候,几乎搜索到所有的文章都会先发一通牢骚。另外,关于的乱码问题,又是一个新的较长篇章。 关于解决Python乱码问题的终极解决方案 (TL;DR) showImg(https://segmentfault.com/img/remote/1460000013229494?w=809&h=184); 有个特别好玩的现象...
阅读 1017·2021-09-26 09:55
阅读 3559·2021-09-24 10:30
阅读 1366·2021-09-08 09:36
阅读 2555·2021-09-07 09:58
阅读 605·2019-08-30 15:56
阅读 768·2019-08-29 18:32
阅读 3599·2019-08-29 15:13
阅读 1842·2019-08-29 13:49