Open dungloi opened 7 months ago
感谢提出这个问题,之所以这样写,使因为我对 gpxpy 的 GPXParser 类有误解。GPXParser 的 init 方法可接受的类型为 Union[AnyStr, IO[str]]
,我认为其可以处理不同编码格式的文件,但刚刚看了 gpxpy 的源码后才发现其对 bytes
类型的处理为 string.decode()
,这个 build-in 方法默认会按 uft-8 解码字符串。也就是说,截止目前,这个 Python 工具只支持 utf-8 的文件。
我猜测您的文件可能是 GBK 或其他格式编码,也希望您可以帮忙确认这一点。python build-in 方法 open
的默认解码方式和操作系统相关,在 Windows 上为 ANSI code page。如果系统为中文,文件编码为 GBK 或 GB2312,将 rb
改为 rt
可以解决这个问题。
但是代码中还不能直接将 rb
改为 rt
,这会破坏 Windows 环境下对 utf-8 文件的支持,当前建议使用两个方案:
rb
为 rt
后面我会尝试修改代码以支持不同操作系统下不同编码,也欢迎PR
环境:windows10; python=3.11; gpxpy=1.3.1 问题:读取Garmin connect网页下载的gpx类型文件运行,提示
似乎将main.py文件第26行rb修改为r即可正确运行(不知道原代码为何用rb),其他使用Garmin设备的朋友可以参考一下 btw非常感谢作者的贡献!