我看到像Django这样的框架在各个地方都使用unicode,所以似乎这可能是一个好主意。
另一方面,如果到处都有这些额外的'u',那么似乎会很麻烦。
如果我不这样做会有什么问题?
如果我这样做了,会有什么问题吗?
我现在正在使用Pylons作为我的框架。
我看到像Django这样的框架在各个地方都使用unicode,所以似乎这可能是一个好主意。
另一方面,如果到处都有这些额外的'u',那么似乎会很麻烦。
如果我不这样做会有什么问题?
如果我这样做了,会有什么问题吗?
我现在正在使用Pylons作为我的框架。
在Python 2.6中,可以通过以下方式避免使用u''
:
from __future__ import unicode_literals
这将使'string literals'
成为Unicode对象,就像在Python 3中一样。
u''
字符串进行准备,然后当你最终升级到Python 3并使用2to3
工具时,所有的u
都将消失。这样你就处于更好的位置,因为你已经用Unicode字符串测试过你的代码了。在内部使用Unicode是避免非ASCII字符问题的好方法。在应用程序的边界处进行转换(将传入数据转换为Unicode,将传出数据转换为UTF-8或其他格式)。在许多情况下,Pylons可以为您执行转换:例如,控制器可以安全地返回Unicode字符串;SQLAlchemy模型可以声明Unicode列。
关于源代码中的字符串字面量:通常不需要使用u前缀。您可以安全地混合包含ASCII的str对象和unicode对象。只需确保所有字符串字面量都是纯ASCII或u“unicode”即可。