DjangoUnicodeDecodeError при получении поля - PullRequest
0 голосов
/ 23 мая 2018

Я столкнулся с проблемой, когда читал из объекта 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: �����

Хорошо, я обнаружил, что это внутренняя ошибка, связанная с gdal или geos wrapper в django.ошибка исходит из этой строки

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

Есть ли способ найти решение этой проблемы?спасибо

1 Ответ

0 голосов
/ 23 мая 2018

хорошо для других людей, которые могут столкнуться с этой проблемой.Я должен был установить encoding в определении источника данных.

вот основная часть

ds = DataSource(shp,encoding='cp1256')
...