问题描述
我需要编写一个脚本,将 ERP 程序连接到制造程序。对于生产程序,问题很清楚 - 我通过 HTTP 请求向它发送数据。 ERP 程序的情况更糟,因为在这种情况下,必须从 DBF 文件中读取数据。
我使用 dbf 库是因为(如果我没记错的话)它是唯一一个能够以相当简单和快速的方式过滤数据的库。我是这样打开数据库的
table = dbf.Table(path).open()
dbf_index = dbf.pql(table,"select * where ident == 'M'")
然后我遍历查询返回的每个连续记录。我需要将 DBF 数据库中选定的数据“打包”成 json 并发送到生产程序 api。
data = {
"warehouse_id" : parseDbfData(record['SYMBOL']),"code" : parseDbfData(record['SYMBOL']),"name" : parseDbfData(record['NAZWA']),"main_warehouse" : False,"blocked" : False
}
parseDbfData 函数看起来像这样,但它不是导致问题的原因,因为没有它它就不会以相同的方式工作。我添加它是为了解决问题。
def parseDbfData(data):
return str(data.strip())
运行时,如果函数遇到来自 DBF 数据库的任何“不匹配”字符(例如任何波兰语字符,即 ą、ę、ś、ć),则脚本会因错误而终止
UnicodeDecodeError: 'ascii' codec can't decode byte 0x88 in position 15: ordinal not in range(128)
错误指向包含此内容的行(在构建 json 中)
"name" : parseDbfData(record['NAZWA']),
此时脚本试图读取的值可能是“Magazyn materiałów Podgórna”。如您所见,该值包含字符“ł”和“ó”。我认为这会使整个脚本中断,但我不知道如何修复它。
我会提到我使用的是 Python 3.9 版。我知道版本 2. 中存在字符编码问题,但我认为 Python 3. 时代已经解决了这个问题。我发现它没有:(
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)