Closed
Description
你好, 我在测试使用 ctpwrapper
的 获取结算单明细回调 OnRspQrySettlementInfo
时, 发现回调的多条数据中, 有一些报错
Traceback (most recent call last):
File "ctpwrapper/TraderApi.pyx", line 1402, in ctpwrapper.TraderApi.TraderSpi_OnRspQrySettlementInfo
File "/root/python/futures/trader_main.py", line 149, in OnRspQrySettlementInfo
print(pSettlementInfo.Content)
File "/root/python/futures/.venv/lib/python3.9/site-packages/ctpwrapper/base.py", line 28, in __getattribute__
return value.decode("gbk")
UnicodeDecodeError: 'gbk' codec can't decode byte 0xd2 in position 499: incomplete multibyte sequence
这是因为内置函数
def __getattribute__(self, item):
value = super().__getattribute__(item)
if isinstance(value, bytes):
return value.decode("gbk")
else:
return value
在获取到bytes
时使用gbk解码, 解码出现了问题, 我修改了源代码为
def __getattribute__(self, item):
value = super().__getattribute__(item)
if isinstance(value, bytes):
return value.decode("gbk", errors="ignore")
else:
return value
设置decode时忽略解析错误的字符来规避错误, 在测试过程中也没有发现数据丢失或错误的情况, 同时也保证了程序正常运行
你是否能将其修改发布? 或者说有更好的解决办法? 这是一个非常好的模块, 给予了我很大帮助, 谢谢!
Metadata
Metadata
Assignees
Labels
No labels