Python培训之5分钟战胜Python字符编码(二)

Python技术文章2016-08-26 |程序圆python培训学院 |Python培训,Python字符编码

2. 具体操作
 
拿到各种编码的内容自然是不用说,那么如果我们想要自己构造怎么做呢,看下面:
 #coding=utf8
 # 字符串前面加u会默认构造出Unicode的字符串
unicodeString = u’Unicode字符串’
 # 字符串前面什么都不加会构造出默认编码(首行限定了现在的utf8)的字符串
utf8String = ‘Utf-8字符串’
 # 当然,没有首行,默认的编码是Ascii
 
那么他们之间怎么转换呢,同样很简单:
 # 接上一段程序
 # Unicode转化为二进制编码中的一种:utf8
unicodeString.encode(‘utf8’)
 # 二进制编码根据自己的编码种类转化为Unicode
utf8String.decode(‘utf8’)
 # 如果二进制编码中混进了奇怪的东西可以根据需求用特殊的decode策略
print(repr(‘u8字\x00符串’.decode(‘utf8’, ‘replace’)))
 
那么怎么样会出现问题呢:
 # 接上一段程序
 # 如果我们把他们转化成同样的编码方式就可以操作(例如相加)
print(repr(unicodeString + utf8String.decode(‘utf8’)))
print(repr(unicodeString.encode(‘utf8’) + utf8String))
 # 但如果不转化,当然就会出现满世界的烤鸭二舅啦
unicodeString + utf8String
 # 所以另一方面也发现,编码转换是需要我们告诉程序怎么做的# 所有`decode`操作都会生成Unicode编码,这是为了方便我之前说的大量接受Unicode的内部命令
 
所以我们需要确定程序使用的编码,这是我们需要告诉程序的东西
 

  • 一方面在操作字符串的时候确定是同种编码
  • 另一方面在使用非自己写的命令时,一般使用Unicode,或者使用接收二进制编码的命令

 #coding=utf8# 这里拿写入文件举例
 # 一般使用Unicodewith open(‘Unicode.txt’, ‘w’) as f: f.write(u’Unicode测试’)
 # 或者使用接收二进制编码的命令with open(‘Utf8.txt’, ‘wb’) as f: f.write(‘Utf8测试’)
 # 你可以反过来做个测试,自然会报错# 二进制的命令方便了在不知道怎么解码的情况下也能进行操作(写入文件)
 3. 建议的使用习惯
 
相信到这里我已经把我对于编码的理解讲完了。
 
我们为什么会碰到各式各样的编码问题:
 

  • 因为我们没有统一编码
  • 因为我们没有用对命令(传对数据)

 
所以这里再重申一下八字真言:确定编码,同类交互
 

  • 碰到问题,问一下自己,我现在是哪种编码
  • 同一种编码才能交互,那我应该是哪种编码

 
这里给出我的使用习惯:
 

  • 确定一种内部编码
  • 内部编码的选择优先级如下:程序必须使用的编码、第三方包使用的编码、你喜欢的编码、Unicode
  • 在输出时再更改到特定的编码

 
记得在开始整个程序之前确定内部的编码,否则编码一团糟会产生很多不必要的bug。
 
不要迷信内部Unicode,例如Evernote开发就应该根据第三方包使用的Utf8确定内部编码。 本文版权归程序圆<a href="https://ajcxy.com/tag/python%e5%9f%b9%e8%ae%ad” target=”_blank”>Python培训学院所有,欢迎转载,转载请注明程序圆出处。谢谢!程序圆:程序圆教程网首发:http://www.itcast.cn/Python/ 

Python教程

Python培训之5分钟战胜Python字符编码(一)

2021-5-5 8:39:06

Python教程

Python列表的6种操作实例

2021-5-5 14:38:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索