编码错误,在python3中

时间:2017-05-26 05:54:59

标签: python-3.x utf-8 character-encoding serial-port pyserial

我有一个类似的问题here我无法解决。在我的代码的另一个例子中,我面临类似的编码错误。做帮助!

我的代码:

port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=10,     bytesize=8)
f_w = open('/home/ryan/python_serial_output.txt','r+')
f_o = open('/home/ryan/python_serial_parse.txt','w')

port.send_break()
sys_reply = port.read(100000)
sys_reply_str = sys_reply.decode('utf-8')
print(sys_reply_str)
sys_reply_str_haha = sys_reply_str.replace("\r","")
sys_reply_str_haha = sys_reply_str_haha.replace("\n","")
i = list(sys_reply_str_haha)
if str(i[-1]) == '>':
    ip = 'CR1'
    ip_en = ip.encode('utf-8')
    port.write(ip_en)
    read_syscheck = port.read(100000)
    read_syscheck_str = read_syscheck.decode('utf-8')
    print(read_syscheck_str)

是的,它效率低下,但我会一步一步地写它,以避免错误开始。

使用此代码,这是我得到的结果。

myname@Toshiba:~$ python3 serial_test.py 

Explorer (c) 2009
All rights reserved.
Firmware Version: 34.11  

>
Traceback (most recent call last):
  File "serial_test.py", line 25, in <module>
    read_syscheck_str = read_syscheck.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 7: invalid continuation byte

似乎我正在编码&#39; CR1&#39;错误的,这就是为什么错误被提示的原因。 CR1应该将我的传感器重置为出厂默认设置,并打算回复确认。

非常感谢您提前寻求帮助。

1 个答案:

答案 0 :(得分:0)

错误的编码方法。

正确的是&#39; cp437&#39;

不确定为什么UTF-8在休息后工作,但在编写命令后没有工作