我正在寻找一种将变量(可能是ASCII字符串,带有额外字符的Unicode字符串,如é或£,或浮点数或整数)转换为Unicode字符串的方法。
当变量是整数时,
当变量是字符串
在Python 2.7中有没有简单的方法可以实现我的需求?还是必须检查变量的类型并以不同的方式处理它?
当变量是整数时,
variable.encode('utf-8')
会导致 AttributeError: 'int' object has no attribute 'encode'
.当变量是字符串
'£'
时,str(variable).encode('utf-8')
会导致UnicodeDecodeError:'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)
。在Python 2.7中有没有简单的方法可以实现我的需求?还是必须检查变量的类型并以不同的方式处理它?
try...except
语句来捕获这个问题。在Python 2中,对于字节串,str('some bytes that encode non-ASCII codepoints')
是可以的。对于unicode
对象,str(u'unicode string with non-ASCII codepoints')
确实会失败,但异常处理程序正是为了处理这种情况而存在的。 - Martijn Pieters