要遵循
best practices for Unicode in python,您应该使用’u’作为字符的所有字符串文字的前缀.有没有可用的工具(最好是PyDev兼容的),如果你忘了它就会发出警告? 最佳答案
you should prefix all string literals with ‘u’
不,不是真的.
您应该为u字符串添加字符串前缀.但并非所有字符串都是字符串.当您与基于字节的组件(如网络服务或二进制文件)进行通信时,您需要使用字节字符串.
例如.想尝试将Unicode字符串写入PNG文件?不明智.想要base64解码字符串Y2Fm6Q ==?你不能在这里合理地使用Unicode字符串,base64是显式字节.
当然,Python通常会让你通过传递一个字符串的unicode字符串,但只能通过自动编码为ASCII.如果字符串包含非ASCII字符,您将获得UnicodeError,就像您使用了预期使用unicode的字节一样. “Unicode是对的,字节错误”是一个具有破坏性的神话.需要对两种字符串进行操作.
如果您担心转换到Python 3,您当然应该将字符串标记为u”,但是您还应该将明确字节字符串标记为b”.无关紧要的字符串可以保留为”并让它们在Python 3上从字节字符串转换为unicode字符串.在很多情况下,Python 2使用字节而Python 3使用Unicode,它适用于做这个.但是仍然有很多情况下你确实需要讨论字节,并且将其转换为Python 3作为unicode会导致问题.
(唯一的问题是b”语法需要Python 2.6或更高版本,因此使用它会使您与早期版本不兼容.)