当前位置: 首页 > 面试题库 >

UnicodeEncodeError:'ascii'编解码器无法在位置0编码字符u'\ xef':序数不在范围内(128)

璩和璧
2023-03-14
问题内容

我想解析我的XML文档。所以我将我的XML文档存储如下

class XMLdocs(db.Expando):  
   id = db.IntegerProperty()    
   name=db.StringProperty()  
   content=db.BlobProperty()

现在我的下面是我的代码

parser = make_parser()     
curHandler = BasketBallHandler()  
parser.setContentHandler(curHandler)  
for q in XMLdocs.all():  
        parser.parse(StringIO.StringIO(q.content))

我低于错误

'ascii' codec can't encode character u'\xef' in position 0: ordinal not in range(128)
Traceback (most recent call last):  
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 517, in __call__
    handler.post(*groups)   
  File "/base/data/home/apps/parsepython/1.348669006354245654/mapreduce/base_handler.py", line 59, in post
    self.handle()   
  File "/base/data/home/apps/parsepython/1.348669006354245654/mapreduce/handlers.py", line 168, in handle
    scan_aborted = not self.process_entity(entity, ctx)   
  File "/base/data/home/apps/parsepython/1.348669006354245654/mapreduce/handlers.py", line 233, in process_entity
    handler(entity)   
  File "/base/data/home/apps/parsepython/1.348669006354245654/parseXML.py", line 71, in process
    parser.parse(StringIO.StringIO(q.content))   
  File "/base/python_runtime/python_dist/lib/python2.5/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)   
  File "/base/python_runtime/python_dist/lib/python2.5/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)  
  File "/base/python_runtime/python_dist/lib/python2.5/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)   
  File "/base/data/home/apps/parsepython/1.348669006354245654/parseXML.py", line 136, in characters   
    print ch   
UnicodeEncodeError: 'ascii' codec can't encode character u'\xef' in position 0: ordinal not in range(128)

问题答案:

看来您要达到UTF-8字节顺序标记(BOM)。尝试使用此Unicode字符串并提取出BOM:

import codecs

content = unicode(q.content.strip(codecs.BOM_UTF8), 'utf-8')
parser.parse(StringIO.StringIO(content))

我使用strip而不是lstrip因为在您的情况下您可能多次出现BOM表,这可能是由于串联的文件内容引起的。



 类似资料:
  • 我目前正在使用Django countries为表单字段获取ISO国家名称列表。它在我的网站上显示时没有错误,但在Django的管理网站上,由于存在非ASCII国家名称,它会导致上述错误: Unicode错误提示:无法编码/解码的字符串是:itan 我已经读到类似的问题可以通过属性来解决,但是如果不接触Django Admin本身,这似乎不是很可行。如果有人能解决这个问题,我将不胜感激。 Mode

  • 问题内容: 我在处理从不同网页(在不同站点上)获取的文本中的字符时遇到问题。我正在使用。 问题是该错误并不总是可重现的。它有时可以在某些页面上使用,有时它会通过抛出来发声。我已经尝试了几乎所有我能想到的东西,但是我没有发现任何能正常工作而不抛出某种与相关的错误的东西。 导致问题的代码部分之一如下所示: 这是运行上述代码段时在某些字符串上生成的堆栈跟踪: 我怀疑这是因为某些页面(或更具体地说,来自某

  • 问题内容: 在我的其中一台计算机上,当我使用Google Apps引擎或Django时出现错误。 例如: app.yaml demas1252c.py foto.html 错误信息: 当我在Django中使用静态文件(不带gae)时,我遇到了非常类似的错误(具有不同的堆栈)。 我试图找到错误的原因,并向mimetypes.py添加了代码: 然后,我在控制台中收到下一条消息: 在注册表HKCR /

  • 问题内容: 当上传具有非ASCII字符的文件时,出现UnicodeEncodeError: 我使用MySQL,nginx和FastCGI运行Django 1.2。 根据Django Trac数据库,这是已解决的问题,但是我仍然有问题。欢迎提供有关如何修复的任何建议。 编辑:这是我的图像字段: 问题答案: 在对此进行更多调查之后,我发现我尚未在我的主要Nginx配置文件中设置字符集: 通过添加以上内

  • 问题内容: 我已经从[python网站] [1]复制了此脚本,这是另一个问题,但是现在编码存在问题: 这次编码问题,当我运行它时,出现了这个错误: 然后我将所有整数都转换为字符串,但是这次我得到了这个错误: 我已经在上面实现了处理Unicode字符的方法,但是它给了我这种错误。有什么问题以及如何解决? 问题答案: 然后我将所有整数都转换为字符串, 您将整数 和 字符串都转换为 字节字符串 。对于字

  • 问题内容: 我只是尝试解码类似\ uXXXX \ uXXXX \ uXXXX的字符串。但我得到一个错误: 我是Python新手。怎么了 谢谢! 问题答案: Python试图提供帮助。您 无法解码 Unicode数据,因为它已经被解码。因此,Python首先将对数据 进行编码 (使用ASCII编解码器)以获取要解码的字节。正是这种隐式编码失败。 如果您具有Unicode数据,则仅将其 编码 为UTF