UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

min:D·2022년 6월 28일

error를 차곡차곡⚠

목록 보기
2/4

문제 없이 3일 이상도 돌던 코드에 갑자기 이런 오류가 발생했다.

코드 설명

import serial

port = 'COM4'
baud = 115200
ser = serial.Serial(port, baud)

data = ser.readline().decode()

시리얼 포트로 데이터를 계속해서 읽어오는 코드이다.
COM4의 포트를 연결해서 ser.readline()로 바이트 문자열을 읽으면 .decode()로 바이트를 디코딩해서 data 변수에 저장한다.

해결 방법

구글링을 해봤는데 대부분 파일을 열다가 생기는 오류인 것 같다.
그래서 파일을 open할 때, encoding='utf-8', errors='ignore'을 추가해서 파일을 열면 해결이 된다고 써있는데.
시리얼 데이터를 읽을 때는 어떻게 해야 할 지 모르겠다...

  1. ser.readline().decode('utf-16')
    또 다른 오류가 발생함

  2. ser.readline().decode()
    그냥 이렇게 원래 상태로만 해도 잘 되는데
    어디서 막히는 건지 모르겠다 정말....
    이 코드에는 무슨 문제가 있는 거야ㅏ.....

  3. ser.readline().decode('ascii')
    이렇게 하는 것이 맞는 것 같음
    오류도 발생하지 않음
    혹은
    ser.readline().decode('unicode_escape')
    이러헥 쓰는 것도 좋은 것 같음 오류가 발생하지 않음

1개의 댓글

comment-user-thumbnail
2023년 2월 2일

감사합니다 4시간동안 낑낑댄걸 해결했어요ㅠㅠ

답글 달기