Python 上的字节到字符串的编码不稳定 3 Ubuntu 上

Erratic encoding of byte to string on Python 3 on Ubuntu

我是 Python 的新手,正在研究传感器。 我正在逐行构建我的代码,但我在 encoding/decoding 字节到字符串的部分遇到了问题。相同的代码,有时有效,有时无效。

代码如下:

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

如何成功消除它的歧义运行?

这可能是因为您的字符串包含非 ascii 字符。当您再次 运行 您的代码时,字符串中没有非 ascii 字符,因此它 运行 成功。

您可以使用 encode() 函数对非 ascii 字符进行编码