Python Telnet连接 - 无法发送特殊字符FF€

时间:2014-03-19 13:55:40

标签: python special-characters telnet

我是这个网站的新手,显然也是python。 我需要向telnet连接发送如下命令: FF€(后跟欧元符号和退货)

(注意:FF应为ASCII,欧元符号与ASCII不同 - > unicode?) 我怎么发这个? 代码如下:

import getpass
import sys
import telnetlib

HOST = "127.0.0.1"
port = "11000"

tn = telnetlib.Telnet(HOST, port)
tn.write('FF\x80')
print(tn.read_all())

非常感谢! HAKI

1 个答案:

答案 0 :(得分:0)

这取决于远程系统对您的期望。根据远程端的字符集,有大约10种不同的方法来编码欧元符号。

您必须要求了解远程系统的人告诉您预期的编码。

之后,您可以使用Unicode符号\u20ACcodecs模块将其转换为远程端所期望的字符集。

请注意,如果仍使用Python 2(u'...'),则需要使用Unicode字符串。

[编辑] 远程端似乎是Windows或使用Windows字符集cp1252see this question

所以这应该有效:

t=u'FF\u20acFF\u20ac\r\n'
e=t.encode('cp1252')
tn.write(e)

response = tn.read_all().decode('cp1252')
print(response)

请注意,您必须对发送的任何内容进行编码并对您收到的任何内容进行解码。

另请注意:在Windows上,行结尾为\r\n。如果发送错误的行结尾,大多数程序都无法正常工作。