1、原因 python2.7在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错,不过在python3就不会有这样的问题。...临时解决方法: 代码中加入如下三行 import sys reload(sys) sys.setdefaultencoding('utf8') 永久解决方法: 如果不想在每个文件中都加这三行,就在python...的Lib\site-packages文件夹下新建一个sitecustomize.py 内容如下: #encoding=utf8 import sys reload(sys) sys.setdefaultencoding...('utf8') 这样的话,系统在python启动的时候,自行调用该文件,设置系统的默认编码 或者: 重新编译安装python,将默认编码改为utf8 ---- 以上参考:解决UnicodeEncodeError
使用技巧 事实上,只要遵守以下规则,可以规避90%由于Unicode字符串处理引起的bug,剩下的10%通过python的库和模块能够解决。 程序中出现字符串时一定要加个前缀u。...你并没有考虑Unicode的兼容,直到项目快要结束……这时候再添加Unicode的支持几乎不太可能,不是吗?...修复对Unicode支持的bug可能会降低代码的可靠性,而且非常有可能引入新的bug。 总结:使应用程序完全支持Unicode,兼容其它的语言本身就是一个工程。它需要详细的考虑、计划。...所有涉及的软件、系统都需要检查,包括python的标准库和其他将要用到的第三方扩展模块。你甚至有可能需要组建一个经验丰富的团队来专门负责国际化(I18N)问题。...节选自《python核心编程(第二版)》P130、P131
因为这个howto把字符相关的知识介绍的很简练、明晰,所以转一下。...Python’s Unicode Support Now that you’ve learned the rudiments of Unicode, we can look at Python’s Unicode...Unicode Literals in Python Source Code In Python source code, specific Unicode code points can be written...>, and is an excellent overview of the design of Python’s Unicode features (based on Python 2, where...Python” are available at python/LSM2005-Developing-Unicode-aware-applications-in-Python.pdf
" # 用decode转成python内部的unicode编码,用repr输出内部形式 s_unicode = s.decode("utf8") print repr(s_unicode...) # 用ecode转成gbk编码输出 s_gbk = s_unicode.encode("gbk") print s_gbk # 用ecode转成标准的...uincode编码 \u****\u**** s_unicode_output = s_unicode.encode("unicode_escape") print s_unicode_output...# 从标准的unicode编码转成 gbk 编码 s_red_gbk = s_unicode_output.decode("unicode_escape").encode("gbk...") print s_red_gbk #按照单个字输出 s 的内容 for i in s_unicode: print i.encode("gbk")
Python、Unicode和中文 python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识。...当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了。...把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明: # coding=gbk s = "中文" print s 再试一下: E:/Project/Python/Test>python...我们这样写: # coding=gbk s = "中文" s1 = u"中文" s2 = unicode(s, "gbk") #省略参数将用python默认的ASCII来解码 s3 = s.decode...更进一步的例子,如果我们这里转换仍然用gbk: # coding=utf-8 s = "中文" print unicode(s, "gbk") 结果:中文 翻阅了一篇英文资料,它大致讲解了python中的
fileinput.input(): sys.stdout.write(line) 但有时候会碰到UnicodeDecodeError: 比如执行: 1 2 3 4 echo -e "foo\x80bar" |python3...decode byte 0x80 in position 3: invalid start byte 这种错误还不好用try .. catch忽略掉,因为它是在fileinput模块中自己parse的;...Python2的时候很罗嗦,需要自己用codecs去判断之后,才能parse; Python3总算是引入了一个openhook参数,可以自己hook处理了; 最简单的处理方式: 1 2 3 4 5 6...fileinput.hook_encoded("utf-8")): sys.stdout.write(line) 参考: https://stackoverflow.com/questions/24754861/unicode-file-with-python-and-fileinput...https://bugs.python.org/issue26756
编写高质量Python代码的59个有效方法--第三条:了解bytes、str与unicode的区别 Python3有两种表示字符序列的类型:bytes和str,这也是Python3最重要的特性之一...前者的实例包含原始的8位值;后者的实例包含Unicode字符。 Python2也有两种表示字符序列的类型:分别叫做str和unicode。...与python3不同的是,str的实例包含原始的8位值;而unicode的实例,则包含unicode字符。 把unicode字符表示为二进制数据(也就是原始8位值)有许多种办法。...最常见的编码方式就是utf-8。但是对于python3的str和python2的unicode实例都没有和特定的二进制编码形式相关联。...编写Python程序的时候,一定要把编码和解码操作放在界面最外围来做。程序的核心部分应该使用unicode字符类型,而且不要对字符编码做任何假设。
大家好,又见面了,我是你们的朋友全栈君。...sequence 今天在anaconda上新建一个python3.6环境后,使用时报错了: (base) C:\Users\peter>activate tf (tf) C:\Users\peter>python...decode byte 0x80 in position 658: illegal multibyte sequence 网上查阅资料后发现这是win10下特有的问题 ---- 解决方案如下: 打开报错的倒数第三行的...history.py文件,定位到82行,源代码如下: 添加代码 ,encoding='utf-8' 再次运行Python就不会报错了。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
一切的根源都是Unicode的闹的。 所以,今天我们就来谈谈这是何方神圣。...Unicode是一个旨在统一所有人类语言(包括过去和现在的语言)并使它们与计算机兼容的标准。 ❝Unicode 是一个将「不同字符分配给唯一编号的表格」。...有如下的关系链子。 一个Unicode对应着一个字符,并且该字符拥有几乎唯一的码位。 ❝Unicode === 字符 ⟷ 码位. ❞ Unicode 有多大?...其中包括 Microsoft Windows、Objective-C、Java、JavaScript、.NET、Python 2等 UTF-32适用于需要直接操作Unicode代码点的情况 ❞ UTF-...Python 3: >>> len("♂️") 5 JavaScript / Java / C#: >> "♂️".length 7 Rust: println!
注明:python3版本设计未考虑向下兼容问题,过渡版本2.6/2.7,代码演版本:2.7.16 ?...python2的字符串类型有str和unicode两种(不是 byte 类型) python3中有了unicode类型。以及一个字节类:byte 和 bytearrays。...Python3源码文件默认使用utf-8编码 Python 2需要查看代码第一行定义,无定义则使用默认字符集。...7、查看当前python中表示unicode字符时占用的空间: ? ?...# 如果值是 65535,则表示使用uns2标准,即:2个字节表示 # 如果值是 1114111,则表示使用uns4标准,即:4个字节表示 8、查看Python默认的编码格式。
unicode unicode编码的出现解决了多国语言展示乱码的问题,但是unicode的解决方案在全英文文档展示的情况下,unicode编码会比ASCII编码多一倍的存储空间(unicode的编码是16bit...在python2.7中当要将字符串encode为utf8,我们需要确保之前的字符串的编码方式为unicode,所以当字符串编码不为unicode时,我们需要使用decode方法,而在使用decode方法时我们需要指明原有字符串的编码格式...所以在根据上面的情况,在python2中出现编码互转的情况,可以参考下图: ?...Python3.6 Python2.7和Python3.6最大的区别就是在执行Python2.7项目时,当项目中包含汉字时,需要在文件头声明编码格式,否则项目中的中文显示就是乱码。...而在Python3中完全没有这样的顾虑,那是因为默认python3中全部的字符串就是unicode可以直接使用encode方法。 ?
Python 3.6 代码: # -*- coding: utf-8 -* def to_unicode(string): ret = '' for v in string:...ret = ret + hex(ord(v)).upper().replace('0X', '\\u') return ret print(to_unicode("中国")) 输出: "D...:\Program Files (x86)\Python36-32\python.exe" E:/PycharmProjects/Test/test.py \u4E2D\u56FD Process finished
转自:链接 python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byte[]...而python中的unicode对象应该才是等同于java中的String对象,或本质上是java的char[]。...对于 : s="你好" u=u"你好" 1. s.decode方法和u.encode方法是最常用的, 简单说来就是,python内部表示字符串用unicode(其实python内部的表示和真实的...8-bit strings(from Guido van Rossum) python之父的这段话大概意思是说encode方法本来是被unicode调的,但如果不小心被作为str对象的方法调,并且这个...用处2 非字符的编码集non-character-encoding-codecs,这些只在python中定义,离开python就没意义(这个来自python的官方文档) 并且也不是人类用的语言,呵呵。
python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byte[]。 ...而python中的unicode对象应该才是等同于java中的String对象,或本质上是java的char[]。 ...对于 Python代码 s="你好" u=u"你好" 1. s.decode方法和u.encode方法是最常用的, 简单说来就是,python内部表示字符串用unicode(其实...python内部的表示和真实的unicode是有点差别的,对我们几乎透明,可不考虑),和人交互的时候用str对象。 ...8-bit strings(from Guido van Rossum) python之父的这段话大概意思是说encode方法本来是被unicode调的,但如果不小心被作为str对象的方法调,并且这个
① Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。...有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了 ② 从python2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,...Unicode字符串用u'xxx'表示unicode,而在3.x中,所有字符串都被视为unicode,因此,写u'xxx'和'xxx'是完全一致的,而在2.x中以'xxx'表示的str就必须写成b'xxx...③ Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。...举例说明如下: ④ 为了适应Python 3.x的新的字符串的表示方法,在2.7版本的代码中,可以通过unicode_literals来使用Python 3.x的新的语法:在python3中默认的编码采用了
decode()方法使用注册编码的编解码器的字符串进行解码。它默认为默认的字符串编码。decode函数可以将一个普通字符串转换为unicode对象。...decode是将普通字符串按照参数中的编码格式进行解析,然后生成对应的unicode对象,比如在这里我们代码用的是utf-8,那么把一个字符串转换为unicode就是如下形式:s2=’哈’.decode...(‘utf-8′),s2就是一个存储了’哈’字的unicode对象,其实就和unicode(‘哈’, ‘utf-8′)以及u’哈’是相同的。...encode()方法正好就是相反的功能,是将一个unicode对象转换为参数中编码格式的普通字符,encode正好就是相反的功能,是将一个unicode对象转换为参数中编码格式的普通字符。...'unicode'>) print('--------------------------') # 将unicode编码转换为汉字,前边不带u的 str = '\u4eac\u4e1c\u653e\
Unicode已经解决了很多问题。知晓ISO-8859-*和CP437带来的混乱(当然对于非西方语言来说更糟糕)的人都可以证明这一点。当然,这些天他们正在做一项有的益工作——编码表情符号。...今日Python 3带来的痛苦更是一言难尽。 Python决定将Unicode完全集成到语言中。听起来很不错吧? 但众多问题也随之而来。...要想让Python程序正确地支持所有有效的Unix文件名,必须使用“bytes”而不是字符串,这可真够烦人的。所有Python程序正确的几率又能达到多少呢?我敢打赌,不会高的。...但是,强烈建议使用str类型,因为这样可以确保Unicode编码的文件名得到跨平台支持(在Windows上,Python 3.3开始,就已经不支持bytes编码的文件名了)。”...英文原文:http://changelog.complete.org/archives/9938-the-python-unicode-mess 译者:盈韬 来源:Python程序员 *声明
基本编码知识 在了解Python中字符串(String)的本质前,我们需要知道ASCII、GBK、UTF-8和Unicode的关系究竟几何。...Python2.x中字符串的本质 Python中实际上有两种字符串,分别是str类型和unicode类型,这两者都是basestring的派生类。...相比于str,unicode是真正的字符串。Python明确地知道它的编码,所以可以很自信地获得一个字符串的实际字数。...字符串编码转换:encode()和decode() Python最常用的编码转换函数是encode()和decode(),他们的本质是:unicode和str的互相转换。...原文地址:Python中GBK, UTF-8和Unicode的编码问题, 感谢原作者分享。
NumPad1 数字键盘上的 1 键 97 NumPad2 数字键盘上的 2 键 98 NumPad3 数字键盘上的 3 键 99...NumPad4 数字键盘上的 4 键 100 NumPad5 数字键盘上的 5 键 101 NumPad6 数字键盘上的 6...键 102 NumPad7 数字键盘上的 7 键 103 NumPad8 数字键盘上的 8 键 104 NumPad9 数字键盘上的...9 键 105 O O 键 79 Oem8 OEM 特有的 223 OemBackslash RT 102 键的键盘上的 OEM...) 190 OemPipe 美国标准键盘上的 OEM 管道键(Windows 2000 或更高版本) 220 Oemplus 任何国家/地区键盘上的 OEM
我们在Python中,可以使用Unicode编码来表示字符。Unicode是一种字符集,它为世界上几乎所有的字符都分配了一个唯一的数字,这个数字被称为码点。...在Python中,在使用Unicode字符出现的问题又该如何解决?...1、问题背景在编写一个递归遍历目录树、列出所有.flac文件并从相应目录/子目录/文件名中提取艺术家、专辑和标题并将其写入文件的Python脚本时,发现代码在找到unicode字符时会出现错误。...2.x升级到Python 3.x版本,因为Python 3.x版本内置了对unicode字符的支持,无需进行额外的处理。..../')Python 3中的字符串默认使用Unicode编码,因此可以直接使用Unicode字符。例如,'你好'表示包含中文字符的字符串。上面就是今天的所有内容了,如果各位还有不懂的,一起留言讨论。
领取专属 10元无门槛券
手把手带您无忧上云