相关疑难解决方法(0)

AttributeError:'module'对象没有属性'setdefaultencoding'

我尝试安装xadmin(这是一个django的插件,用于使用Twitter的bootstrap后台).但是当我运行我的项目时,我的PyCharm终端出现以下错误:

File "C:\Python34\lib\site-packages\xadmin\sites.py", line 10, in <module>
sys.setdefaultencoding("utf-8")
AttributeError: 'module' object has no attribute 'setdefaultencoding'
Run Code Online (Sandbox Code Playgroud)

这是xadmin插件中sites.py的源代码摘录:

import sys
from functools import update_wrapper
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from django.db.models.base import ModelBase
from django.views.decorators.cache import never_cache
from imp import reload

reload(sys)
sys.setdefaultencoding("utf-8")
Run Code Online (Sandbox Code Playgroud)

该项目使用python 3.4解释器和Django 1.7.1运行.xadmin的版本是0.5.0

我能做什么 ?

python django

18
推荐指数
2
解决办法
6万
查看次数

编码给出''ascii'编解码器不能编码字符...序数不在范围内(128)"

我通过Django的RSS阅读器项目的工作在这里.

RSS提要将读取类似"OKLAHOMA CITY(AP) - James Harden let"的内容.RSS feed的编码读取encoding ="UTF-8",所以我相信我在下面的代码片段中将utf-8传递给markdown.em dash是它窒息的地方.

我得到Django错误"'ascii'编解码器不能编码位置109中的字符u'\ u2014':ordinal not in range(128)"这是一个UnicodeEncodeError.在传递的变量中,我看到"OKLAHOMA CITY(AP)\ u2014 James Harden".无效的代码行是:

content = content.encode(parsed_feed.encoding, "xmlcharrefreplace")
Run Code Online (Sandbox Code Playgroud)

我正在使用markdown 2.0,django 1.1和python 2.4.

我需要做的编码和解码的神奇序列是什么才能使其工作?


(回应普罗米修斯的要求.我同意格式化有帮助)

所以在视图中我在parsed_feed编码行上面添加了一个smart_unicode行...

content = smart_unicode(content, encoding='utf-8', strings_only=False, errors='strict')
content = content = content.encode(parsed_feed.encoding, "xmlcharrefreplace") 
Run Code Online (Sandbox Code Playgroud)

这把问题推到了我的models.py中

def save(self, force_insert=False, force_update=False): 
     if self.excerpt: 
         self.excerpt_html = markdown(self.excerpt) 
         # super save after this 
Run Code Online (Sandbox Code Playgroud)

如果我将保存方法更改为...

def save(self, force_insert=False, force_update=False): 
     if self.excerpt: 
         encoded_excerpt_html = (self.excerpt).encode('utf-8') 
         self.excerpt_html = markdown(encoded_excerpt_html)
Run Code Online (Sandbox Code Playgroud)

我得到错误"'ascii'编解码器无法解码位置141的字节0xe2:序号不在范围内(128)"因为现在它读取"\ xe2\x80\x94",其中em dash是

python django unicode character-encoding

14
推荐指数
2
解决办法
3万
查看次数

什么是"ANSI_X3.4-1968"编码?

请参阅我的系统上的以下输出:

[STEP 101] # python3 -c 'import sys; print(sys.stdout.encoding)'
ANSI_X3.4-1968
[STEP 102] #
[STEP 103] # locale
LANG=C
LANGUAGE=en_US:en
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
[STEP 104] #
Run Code Online (Sandbox Code Playgroud)

谷歌搜索但发现很少有关于它的信息.甚至Python的Python库参考(v3.5.2)也没有提到它.任何国际标准都定义了它?


(从接受的答案评论中复制权威参考:字符集)

python python-3.x python-unicode

11
推荐指数
2
解决办法
6983
查看次数