Highlights
🐛 syslog live no longer dies on characters the console can't encode
On Windows, pymobiledevice3 syslog live could run for hours and then exit with
UnicodeEncodeError: 'charmap' codec can't encode characters (#1942). The console handed Python a
strict cp1252 stdout, and the first syslog line carrying an emoji, an arrow or CJK text made
print() raise. This affected any command that prints device-supplied text, not only syslog.
The CLI now reconfigures stdout and stderr with errors="backslashreplace": such characters are
printed as \U0001f600-style escapes instead of killing the command. The syslog live --out file
is always written as UTF-8 rather than in the host locale encoding, so the tee file keeps the
original characters and doesn't hit the same crash.
pymobiledevice3 syslog live -o device.logThanks to @rob-X1 for reporting and verifying the fix.
What's Changed
- 7099bab syslog: Write --out as UTF-8 regardless of the host locale (#1943) (@doronz88)
- c3bfc08 cli: Escape characters the console encoding cannot represent (#1943) (@doronz88)
Full Changelog: v11.12.1...v11.12.2