如何允许编码('utf-8')两次而不会在python中出错?

Kev*_*vin -1 python unicode encoding utf-8

我有一个遗留代码段,encode('utf-8')当我传入一个unicode字符串(直接来自数据库)时总是对我来说,是否有办法将unicode字符串更改为其他格式以允许它再次编码为'utf-8'而无需获取错误,因为我不允许更改遗留代码段.

我先尝试解码它,但它返回此错误

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如果我将unicode字符串保留为返回状态

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 986: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如果我将遗留代码更改为不起作用encode('utf-8'),但这不是一个可行的选择

编辑:

这是代码片段

#!/usr/bin/env python2
# -*- coding: utf-8 -*-



if __name__ == "__main__":
   # 1
   a = u'??'
   # 2
   a = a.decode('utf-8')
   # 3
   a.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

出于某种原因,如果我跳过,#2我没有得到上面提到的错误,我仔细检查字符串的类型,它似乎都是unicode,两个是相同的字符,但我正在处理的代码不允许我编码或解码utf-8,而某些片段中的相同字符允许我这样做.

Cha*_*ffy 5

考虑以下情况:

  1. 如果你想要一个unicode字符串,并且你已经拥有一个unicode字符串,那么你什么也不需要.
  2. 如果你想要一个bytestring,并且你已经有了一个bytestring,你就什么也不做.
  3. 如果你有一个unicode字符串并想要一个bytestring,你可以编码它.
  4. 如果你有一个bytestring并想要一个unicode字符串,你可以解码它.

在这些情况中,任何一种情况都不适合编码或解码.