【发布时间】:2016-06-08 19:10:00
【问题描述】:
>>> cmd="echo ö"
>>> type(s1)
<str>
>>> print s1
echo ö
>>> chan.exec_command(cmd)
我从外部应用程序中得到一个带有一些 unicode 字符的字符串。我应该如何在我的 python 代码中正确处理这个字符串?当我将其发送到 paramiko exec_command 方法时,我收到如下异常。这里chan 是我的 Paramiko 对象。
'ascii' 编解码器无法对位置 136 中的字符 u'\xfc' 进行编码:序数 不在范围内(128)
在将它发送到 paramiko 之前,我需要对这个字符串进行编码/解码。我是 python 新手,任何帮助将不胜感激。 这是我要添加的字符串:
X0A3549029:[u'Uni\xf3n de Cr\xe9', u'DemoModel', 'NA']
Traceback (most recent call last):
File "updateTelemetry.py", line 98, in <module>
query="insert into record_tmp(sn,cname,model,product) values('"+key+"','"+value[0].decode('utf8')+"','"+value[1]+"','"+value[2]+"')"
File "/usr/lib64/python2.6/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 3: ordinal not in range(128)
【问题讨论】:
-
您的示例是一个可以是任何编码的字节字符串。字节字符串不会返回
can't encode错误消息,因为它们已经被编码。产生该错误的 actual 字符串和数据类型是什么?请发帖MCVE。 -
好吧,你需要放慢脚步,学习一下 Python 2 中的 Unicode。在这里查看我的快速总结:stackoverflow.com/questions/21129020/…。您粘贴的堆栈跟踪似乎与顶部的代码行没有相似之处。最好的办法是结束这个问题并提出一个新的问题,其中包含完整的源、输入和给定的堆栈跟踪。
标签: python python-2.7 unicode paramiko python-unicode