2019年10月13日日曜日

PlatfprmIOで UnicodeDecodeError: 'cp932'

PlatformIOが使用するPythonのバージョンを3.7.4に上げたあとにビルドすると下記エラー
  File "c:\users\xxx\.platformio\penv\lib\site-packages\platformio\proc.py", line 66, in 
    for byte in iter(lambda: self._pipe_reader.read(1), ""):
UnicodeDecodeError: 'cp932' codec can't decode byte 0x9e in position 189: illegal multibyte sequence
読み込みのところでcp932で読もうとして失敗しているらしい。
ソースコードはUTF-8で書いているのに。。。

発生している箇所
\.platformio\penv\lib\site-packages\platformio\proc.py"
for byte in iter(lambda: self._pipe_reader.read(1), ""):
の「self._pipe_reader」の定義を参照
os.fdopenのところにエンコードを指定すれば回避される。
    def __init__(self):
        self._fd_read, self._fd_write = os.pipe()
        # self._pipe_reader = os.fdopen(self._fd_read)
        self._pipe_reader = os.fdopen(self._fd_read, encoding='utf-8_sig') #エンコード指定
        self._buffer = ""
        self._thread = Thread(target=self.run)
        self._thread.start()

0 件のコメント:

コメントを投稿