summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJos Verlinde <Jos_Verlinde@hotmail.com>2025-08-03 00:09:09 +0200
committerDamien George <damien@micropython.org>2025-08-11 13:28:56 +1000
commit20e1ae07336a89e7054562a1bef26fae99802210 (patch)
tree48c81c2f5710042514964b5a7f150f2d9a28a19d
parent8c47ff7153a7a54eced6c8177698339abe4973ae (diff)
tools/mpremote: Fix encoding error in PyboardCommand.
This is a fix for utf-8 decoding errors that are thrown when non-utf-8 content is received. For instance during a reboot of an ESP8266 module. The fix is to handle conversion errors by replacing illegal characters. Note that these illegal characters most often occur during an MCU reboot sequence when the MCU is using baudrates different from 115200. Signed-off-by: Jos Verlinde <Jos_Verlinde@hotmail.com>
-rw-r--r--tools/mpremote/mpremote/transport_serial.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/mpremote/mpremote/transport_serial.py b/tools/mpremote/mpremote/transport_serial.py
index daeff02b5..e2490a7ca 100644
--- a/tools/mpremote/mpremote/transport_serial.py
+++ b/tools/mpremote/mpremote/transport_serial.py
@@ -795,7 +795,7 @@ class PyboardCommand:
if n == 0:
return ""
else:
- return str(self.fin.read(n), "utf8")
+ return str(self.fin.read(n), "utf8", errors="backslashreplace")
def wr_s8(self, i):
self.fout.write(struct.pack("<b", i))
@@ -925,7 +925,7 @@ class PyboardCommand:
fd = self.rd_s8()
buf = self.rd_bytes()
if self.data_files[fd][1]:
- buf = str(buf, "utf8")
+ buf = str(buf, "utf8", errors="backslashreplace")
n = self.data_files[fd][0].write(buf)
self.wr_s32(n)
# self.log_cmd(f"write {fd} {len(buf)} -> {n}")