UnicodeEncodeError:“ascii”编解码器无法编码字符[...]

2024-04-23

我已阅读如何非 Unicode http://docs.python.org/howto/unicode.html来自官方文档和完整、非常详细的article http://boodebr.org/main/python/all-about-python-and-unicode以及。我仍然不明白为什么它会抛出这个错误。

以下是我尝试的操作:我打开一个 XML 文件,其中包含超出 ASCII 范围的字符(但在允许的 XML 范围内)。我这样做是用cfg = codecs.open(filename, encoding='utf-8, mode='r')运行良好。查看字符串repr()还显示了一个 unicode 字符串。

现在我继续阅读parseString(cfg.read().encode('utf-8')。当然,我的 XML 文件是这样开头的:<?xml version="1.0" encoding="utf-8"?>。虽然我认为它不相关,但我也为我的 python 脚本定义了 utf-8,但由于我没有直接在其中编写 unicode 字符,所以这不应该适用于这里。对于以下行也是如此:from __future__ import unicode_literals这也是一开始的事。

接下来,我将生成的对象传递给我自己的类,在其中将标签读入变量中,如下所示:xmldata.getElementsByTagName(tagName)[0].firstChild.data并将其分配给我的类中的一个变量。

现在完美工作的是这些命令(obj 是该类的实例):

for element in obj:
    print element

这个命令也确实有效:

print obj.__repr__()

我定义了__iter__()只产生每个变量__repr__()使用典型的 printf 东西:"%s" % self.varname

两个命令都可以完美打印并且可以输出unicode字符。 不起作用的是:

print obj

现在我陷入了困境,因为这引发了可怕的事情

UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 47:

那么我错过了什么?我究竟做错了什么?我正在寻找一个通用的解决方案,我总是想将字符串处理为unicode,只是为了避免任何可能的错误并编写兼容的程序。

编辑:我还定义了这个:

def __str__(self):
    return self.__repr__()
def __unicode__(self):
    return self.__repr__()

从文档中我得知这个


我终于解决了。问题是(我不知道为什么)如果你打电话给__str__() or __repr__()直接它会很乐意处理好它,但直接打印它(如:print obj)不起作用(尽管它应该只调用__str__()本身)。

最后的帮助来自于此article http://wiki.python.de/Von%20Umlauten,%20Unicode%20und%20Encodings。当我使用 utf-8 编码时,我已经到达了将其打印到控制台的步骤(但是是一个错误的字母)。最后通过定义这个来解决它是完全正确的:

def __str__(self):
    return self.__repr__().encode(stdout.encoding)

现在唯一悬而未决的问题是:为什么print obj.__str__() and print obj与此不同?这对我来说毫无意义。是的,再次强调这一点:调用前者或__repr__()确实有效。并且仍然使用显式编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UnicodeEncodeError:“ascii”编解码器无法编码字符[...] 的相关文章

随机推荐

  • 如何在php中每隔几秒使用打印语句和图像的功能刷新div

    我正在尝试构建一个主要使用 PHP 的浏览器纸牌游戏 也许还添加了一些其他有用的语言 以测试和扩展我的 PHP 知识 以及我一直想做的东西 但我读过并尝试实施的每个在线解决方案都不起作用 我不知道为什么 我有这样的逻辑 find game
  • 对于 Android 蓝牙,EXTRA_PREVIOUS_SCAN_MODE 始终返回错误

    当设备的蓝牙扫描模式更改 即可发现 不可发现 时 我使用以下代码将对象返回到 Cordova cordova getActivity getApplicationContext registerReceiver new BroadcastR
  • 如何使用 flash.filesystem.FileStream [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Will 如何使用flash filesystem FileStream FileStream as文件在哪里 班上flash files
  • 如何为我的单元测试创​​建 HttpContext?

    我正在努力模拟所需的HttpContext对于我的单元测试 我已经从我的 Mvc 控制器中抽象出了会话的控制SessionManager接口并用一个名为的类实现它CookieSessionManager 早期发展阶段 CookieSessi
  • 错误“无法复制文件,因为它正在被另一个进程使用

    我使用 C 语言使用 Windows 窗体应用程序 我有很多窗体 当我想从一个窗体遍历到另一个窗体时 我使用this Hide 当我使用此方法时 我收到显示的错误 我知道解决方案是使用 Windows 任务管理器结束进程 但问题是有什么方法
  • “忙等待”与“睡眠”的权衡是什么?

    这是我之前问题的延伸 unix linux 套接字中的阻塞模式如何工作 https stackoverflow com questions 1107391 how does blocking mode in unix linux socke
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • GetTokenInformation、TOKEN_OWNER 和 LookupAccountSidA

    我正在尝试使用这些功能来获取运行该进程的用户名 这是代码 include
  • 是否可以在GPU中实现Huffman解码?

    我们有一个用霍夫曼编码编码的数据库 这里的目的是将其及其关联的解码器复制到 GPU 上 然后在 GPU 上对数据库进行解码 并在解码后的数据库上执行操作 而无需将其复制回 CPU 上 我还远远不是霍夫曼专家 但我所知道的少数人表明 它似乎是
  • 如何在基于eclipse的Spring项目中添加bean配置文件?

    我从头开始处理 Spring 项目 当我尝试添加新的 Spring bean 配置文件时 我只是在那里看不到它 项目结构和选择向导如下 Figure 选择向导中没有 弹簧 部分 Figure project structure 如何在项目中
  • Scala 中的类型参数化

    所以我现在正在学习 Scala 我正在尝试创建一个向量空间为 3 x y z 坐标 的抽象向量类 我正在尝试将其中两个向量与以下代码相加 package math class Vector3 T ax T ay T az T def x a
  • 学习 CIL [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 EC2 实例创建中使用“无需密钥对继续”?

    我对 AWS 比较陌生 正在探索不同的可用选项 创建实例时 如果选择 在没有密钥对的情况下继续 我们将无法连接到该实例 文档中还有一条说明 说明不应选择此选项 那么这个选项的主要用途是什么呢 我们应该在哪些场景下使用它 选项Proceed
  • PDO 在 UTF-8 字符处截断字符串[重复]

    这个问题在这里已经有答案了 我使用的是 PHP 5 5 当我尝试在 MySQL 数据库中插入 UTF 8 字符时 PDO 在第一个非 ASCII 字符处将其截断 我已将连接设置为 DB TYPE host DB HOST dbname DB
  • 应用程序图标在 Android 设备上不可见

    我正在开发一款安卓游戏 它工作正常 但我有一个问题 如果我从我的android manifest我的应用程序图标可见 如果我不删除这些行 那么我的应用程序图标在我的 Android 上将不可见
  • 为什么在 CSS 中使用 div 宽度的百分比值?

    我正在阅读有关 css 的文章 我发现许多作者建议对 div 的宽度或高度使用 值 我一直在使用像素 为什么我应该使用 值来表示 div 的宽度或高度而不是像素 有什么优点 我个人不喜欢主要内容区域有 宽度的网站 因为不一致 整个网站最好使
  • 如何从 Java watchservice 取消注册目录?

    我向我的 watchService 注册了一个文件夹 path register watchService ENTRY CREATE ENTRY DELETE ENTRY MODIFY 后来我想取消这个注册 我知道我需要以某种方式告诉 wa
  • Ember 数据保存关系

    我很难在 ember 数据中保存一对多关系 我有这样的关系 App ParameterSet DS Model name DS attr string regions DS hasMany App Region App Region DS
  • 针对 xsd 的 xml 模式转换问题在 Android 应用程序中给出非法异常

    我已经编写了一段代码来根据我的 android 应用程序中给定的 xsd 文件验证给定的 xml 文件 但它给出了非法异常错误 在一些帖子中我看到它是因为 java 版本较低 但我的java版本是1 6 0 20 请检查下面的代码 错误日志
  • UnicodeEncodeError:“ascii”编解码器无法编码字符[...]

    我已阅读如何非 Unicode http docs python org howto unicode html来自官方文档和完整 非常详细的article http boodebr org main python all about pyt