我在阅读GEOSGeometry对象时遇到了问题。我使用过这段代码
ds = DataSource(shp file path)
lyr = ds[0]
for feat in lyr:
geom_t = feat.geom.transform(wgs84, clone=True)
name =feat.get('name')
此代码适用于我的形状文件。但如果name
字段包含utf8字符串,例如'تست',则会引发此错误
DjangoUnicodeDecodeError at /views/importdata/
'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte. You passed in b'\xc8\xe1\xe6\xc7\xd1 \xc7\xe3\xc7\xe3 \xd1\xd6\xc7' (<class 'bytes'>)
Unicode error hint
The string that could not be encoded/decoded was: �����
我发现这是一个内部错误,与django中的gdal或geos包装有关。错误来自这一行
return force_text(string, encoding=self._feat.encoding, strings_only=True)
在此目录中的field.py中
D:\Python\Python36\lib\site-packages\django\contrib\gis\gdal\field.py in as_string
有没有办法找到解决这个问题的方法? 感谢
答案 0 :(得分:0)
对于可能面临这个问题的其他人来说也是如此。我必须在数据源定义中设置encoding
。
这是主要部分
ds = DataSource(shp,encoding='cp1256')