GeoDjango 遇到 UnicodeEcodeError
GeoDjango confronts UnicodeEcodeError
我在执行 LayerMapping 指令时遇到错误 here。
错误说:
UnicodeEncodeError: 'cp950' codec can't encode character '\xc3' in position 39: illegal multibyte sequence
我找到了一些解决方案,但其中 none 解决了我的情况。
我使用:
- Windows 8
- python 3.4
- 我是台湾人所以用'cp950'
我找到了官方说明here。它说我应该将我的 LANG 环境变量从 msbc
更改为 en_US.UTF-8
.
但是,我意识到 Windows 使用 msbc
,我不应该更改此系统语句。(我在 [=41= 中找不到如何更改我的 LANG 环境变量] 8)
我该如何解决这个问题?
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\User\django\geodjango\world\load.py", line 27, in run
lm.save(verbose=verbose)
File "C:\Users\User\django\django_venv\lib\site-packages\django\contrib\gis\ut
ils\layermapping.py", line 627, in save
_save()
File "C:\Python34\lib\contextlib.py", line 30, in inner
return func(*args, **kwds)
File "C:\Users\User\django\django_venv\lib\site-packages\django\contrib\gis\ut
ils\layermapping.py", line 589, in _save
stream.write('Failed to save %s:\n %s\nContinuing\n' % (kwargs, msg))
UnicodeEncodeError: 'cp950' codec can't encode character '\xc3' in position 3987
: illegal multibyte sequence
看起来您在 LayerMapping 中有错误,但由于编码问题,错误消息无法写入标准输出。
我不确定 Django 如何处理 stdout 或其编码,但解决方法是将具有 UTF-8 编码的特定日志文件传递给 LayerMapping 模块
例如
lm_log = io.open("lm.log", "a", encoding="UTF-8")
LayerMapping.save(stream=lm_log)
我在执行 LayerMapping 指令时遇到错误 here。
错误说:
UnicodeEncodeError: 'cp950' codec can't encode character '\xc3' in position 39: illegal multibyte sequence
我找到了一些解决方案,但其中 none 解决了我的情况。
我使用:
- Windows 8
- python 3.4
- 我是台湾人所以用'cp950'
我找到了官方说明here。它说我应该将我的 LANG 环境变量从 msbc
更改为 en_US.UTF-8
.
但是,我意识到 Windows 使用 msbc
,我不应该更改此系统语句。(我在 [=41= 中找不到如何更改我的 LANG 环境变量] 8)
我该如何解决这个问题?
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\User\django\geodjango\world\load.py", line 27, in run
lm.save(verbose=verbose)
File "C:\Users\User\django\django_venv\lib\site-packages\django\contrib\gis\ut
ils\layermapping.py", line 627, in save
_save()
File "C:\Python34\lib\contextlib.py", line 30, in inner
return func(*args, **kwds)
File "C:\Users\User\django\django_venv\lib\site-packages\django\contrib\gis\ut
ils\layermapping.py", line 589, in _save
stream.write('Failed to save %s:\n %s\nContinuing\n' % (kwargs, msg))
UnicodeEncodeError: 'cp950' codec can't encode character '\xc3' in position 3987
: illegal multibyte sequence
看起来您在 LayerMapping 中有错误,但由于编码问题,错误消息无法写入标准输出。
我不确定 Django 如何处理 stdout 或其编码,但解决方法是将具有 UTF-8 编码的特定日志文件传递给 LayerMapping 模块
例如
lm_log = io.open("lm.log", "a", encoding="UTF-8")
LayerMapping.save(stream=lm_log)