我正在寻找一种方法将变量(可以是ASCII字符串,带有额外字符的unicode字符串,如é或£,或浮点数或整数)转换为unicode字符串。
@model Parts
@Html.DisplayFor(m => m.MyParts)
其中@model PartModel
<div>
<span>@Html.DisplayFor(m => m.Name)</span>
<span>@Html.DisplayFor(m => m.Quantity)</span>
</div>
是一个整数会产生variable.encode('utf-8')
variable
其中AttributeError: 'int' object has no attribute 'encode'
是字符串str(variable).encode('utf-8')
会导致variable
有没有一种简单的方法可以在Python 2.7中查找我正在寻找的内容?或者我是否必须检查变量的类型并以不同的方式处理它?</ p>
答案 0 :(得分:2)
编码永远不会产生unicode
个对象。您解码从字节到unicode
。
因此,您可以通过解码转换为str
(字节字符串)然后转换为unicode
:
str(obj).decode('utf8')
对于已经 unicode
值的对象,这仍然会失败,因此您可能希望使用try..except
来捕获该情况:
try:
obj = str(obj).decode('utf8')
except UnicodeEncodeError:
# already unicode
pass
如果您尝试对字节字符串进行编码,Python 2会先隐式首先解码为unicode
,这就是您获得UnicodeDecodeError
的原因。
答案 1 :(得分:-1)