在Ubuntu上的Python 3上字节到字符串的不规则编码

时间:2017-05-25 08:33:26

标签: python-3.5 ubuntu-16.04 pyserial

我是Python新手,正在研究传感器。 我逐行构建我的代码,我遇到了字节到字符串的编码/解码部分的问题。相同的代码,有时它可以工作,有时它会选择。

以下是代码:

import serial
import time
import os

port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=1,      bytesize=8)
f_w = open('/home/myname/python_serial_output.txt','r+')

port.send_break()

while True:
    op = port.read(2)
    op_str = op.decode('utf-8')
    f_w.write(op_str)
    print(op_str)

第一次没有工作,但第二次工作。为什么呢?

这是我得到的错误:

myname@Toshiba:~$ python3 serial_test.py 
Traceback (most recent call last):
  File "serial_test.py", line 13, in <module>
    op_str = op.decode('utf-8') 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte

myname@Toshiba:~$ python3 serial_test.py 
Ex
pl
or
er

如何消除它成功运行的模糊性?

1 个答案:

答案 0 :(得分:0)

这可能发生过,因为你的字符串有一个非ascii字符。再次运行代码时,字符串中没有非ascii字符,因此它成功运行。

您可以使用encode()函数

对非ascii字符进行编码