当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中使用.encode('utf-8')?

如何解决《如何在Python中使用.encode('utf-8')?》经验,为你挑选了1个好方法。

我正在管理一些Python代码,我现在在日志中看到错误:

Traceback (most recent call last):
  File "./app/core.py", line 772, in scrapeEmail
    l.info('EMAIL SUBJECT: ', header['value'])
  File "./app/__init__.py", line 44, in info
    logging.info(str(datetime.utcnow()) + ' INFO     ' + caller.filename + ':' + str(caller.lineno) + ' - ' + ' '.join([str(x) for x in args]))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xea' in position 25: ordinal not in range(128)

我想这意味着header['value']包含不同编码的字符.

我四处搜索,这个SO答案暗示"将.encode('utf-8')最近版本的Python 放在对象的末尾".

这给我提出了两个问题:

    我需要使用什么对象.encode('utf-8').开x或关str(x).它应该是str(x.encode('utf-8'))或者在str(x).encode('utf-8')

    作者对"最新版本的Python"的意思是什么?我还可以.encode('utf-8')在Python中使用2.7吗?

通常我会尝试它,但找到发生错误的字符串并不容易(实际上是不可能的).所以我无法真正测试它.

这里会有一点帮助.



1> Ryan Chou..:

我建议您首先要清楚地了解unicode与其他编码格式(例如GB2312,GBK)之间的关系.很快就没有编码和解码的主要问题:)

下图将向您展示这种关系,一旦掌握了主要内容,您将知道何时以及如何在代码中进行编码和解码.:)

---------              -----------             ----------
|       |  1.decode(A) |         | 2.encode(B) |        |
|   A   | -----------> | unicode | ----------->|   B    |
|       | <----------- |         | <---------- |        |
|       |  4.encode(A) |         | 3.decode(B) |        |
---------              -----------             ----------

因此,根据图表,您应该知道现在的编码,以及要转换的编码,然后按照图表所示的关系进行操作.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有