将变量类型转换为unicode字符串

时间:2016-10-30 22:23:48

标签: python unicode encoding utf-8 int

我正在寻找一种方法将变量(可以是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>

2 个答案:

答案 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)

这是一篇旧帖子,但我遇到了同样的问题:/我最终使用了unicode函数。这是一个内置函数,你可以阅读它here

所以唯一的变化是代替str(theThing)你可以使用unicode(theThing),正如文档中所说,它的行为类似于str,除了它转换为unicode字符串而不是ascii字符串。

如果你正在使用某种文件写作或其他一些东西,你可能会遇到问题,或者至少我做过:D和this post修复我的