謎のエラーメッセージ
UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x98 in position 134: illegal multibyte sequence
というエラーメッセージで、C++(Arduino)のswitch~case文の中で起きました。「multibyte」とありますが、特に日本語を使ってるとかはありません。
case 0xc0: uint8_t r = 0x00; break;
色々と試行錯誤したところ、case文のコードを中括弧({})で囲むと、コンパイルエラーが消えてくれました。
case 0xc0: { uint8_t r = 0x00; } break;
ビルド環境
- VisualStudioCode(1.47.2)
- PlatformIO-Core(4.3.4)
- PlatformIO-Home(3.2.3)
- platformio.iniは以下。
[env:m5stack-core-esp32] platform = espressif32@1.12.4 board = m5stack-core-esp32 framework = arduino monitor_speed = 115200 lib_deps = # Using a library name EL_dev_arduino M5Stack@0.2.8 build_flags = -D EL_DEBUG
問題が再発しました。(2020/11/2)
今度はC++のソースのどこに悪いのか、さっぱりです。
そこで、エラーメッセージを頼りにplatformio自体のpythonコード(proc.py)を弄ることにしました。(下記コードのos.fopen()メソッドの引数「encoding=”utf-8″」を追加)
class AsyncPipeBase(object):
def __init__(self):
self._fd_read, self._fd_write = os.pipe()
self._pipe_reader = os.fdopen(self._fd_read, encoding="utf-8")
「M5Stack(PlatformIO)環境での奇妙なエラーと回避方法」への2件の返信
始めまして。
私も同じ症状で悩まされていました。
https://kunsen.net/2018/07/28/post-618/
このサイトの一番最後のコメントの方も同じような症状で、解決策も書いてあります。
なぜこのようなエラーがでるかは
https://qiita.com/methane/items/9a19ddf615089b071e71
ここの記事に書いてあります。
ご参考まで。
ふぃるさま
コメントありがとうございます。
有用な情報、感謝します。
参考にさせていただきます。