簡體   English   中英

UnicodeDecodeError Django Error Collectstatic

[英]UnicodeDecodeError Django Error Collectstatic

我有個問題。 我使用collectstatic進行生產。 但是我有一個CSS文件的問題。 UnicodeDecodeError:'utf-8'編解碼器無法解碼位置240647中的字節0xe1:無效的繼續字節

但是,我不知道為什么。

這是回溯:

Post-processed 'tiempo_turco/stylesheets/foundation.css' as 'tiempo_turco/stylesheets/foundation.6f8a1d5c4dbc.css'
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/core/management/base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/core/management/base.py", line 285, in execute
output = self.handle(*args, **options)
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/core/management/base.py", line 415, in handle
return self.handle_noargs(**options)
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 173, in handle_noargs
collected = self.collect()
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 119, in collect
for original_path, processed_path, processed in processor:
File "/home/tulipan/Proyectos/IspanyolHaber/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 251, in post_process
content = original_file.read().decode(settings.FILE_CHARSET)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe1 in position 240647: invalid continuation byte

非常感謝您的幫助!

更新:

我嘗試解決此問題,刪除此CSS文件,但是,我刪除了,並且出現了相同的錯誤,我不明白為什么!

您的CSS文件可能未真正編碼為UTF8,很可能是ISO-8859-1,其中字節0xE1等於á (帶小字符的拉丁文小寫字母A)。 您可以使用file命令檢查文件類型,然后使用iconv將其轉換為UTF8:

$ cp tiempo_turco/stylesheets/foundation.css /tmp
$ file /tmp/foundation.css
/tmp/foundation.css: ISO-8859 text
$ iconv -f ISO-8859-1 -t UTF8  /tmp/foundation.css >/tmp/foundation_utf8.css
$ file /tmp/foundation_utf8.css
/tmp/foundation_utf8.css: UTF-8 Unicode text

不確定如何在安裝中更新文件-您說您嘗試不做任何更改就刪除了它,因此也許您需要重新啟動服務器?

如果沒有iconv ,則可以在Python中將其轉換為UTF8:

$ python
>>> css = open('/tmp/foundation.css').read().decode('iso-8859-1')
>>> open('/tmp/foundation_utf8.css', 'w').write(css.encode('utf8'))

當我在docker容器中使用django-pipeline時,我遇到了相同的錯誤。 事實證明,由於某種原因,系統使用POSIX語言環境。 我使用了這里提出的解決方案並在系統外殼中導出了語言環境設置:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

運行良好。 另外,請注意我在docker和外部計算機中都這樣做了。

Django具有將字符串轉換為unicode的良好功能。 試試這個功能

from from django.utils.encoding import smart_unicode

smart_unicode(value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM