Python 如何将unicode类型转换为str类型?(可能这与编码或解码无关)

Python 如何将unicode类型转换为str类型?(可能这与编码或解码无关),python,unicode,Python,Unicode,我将字符串s定义为: s='中文' 我需要将其编码为转义代码单元(\u4e2d\u6587),如下所示: s2='\u4e2d\u6587' 我试过这个: s1=unicode(s,'cp936') print type(s1) 但是它会打印(如果我打印s,我会得到) 如果重要的话,我使用的是Python 2.7.8。s=中文'在Python 2中是一个字节字符串,因此字节字符串的编码方式不明确。它将在源文件的编码中,但该信息丢失 但是,使用Unicode字符串进行转换非常简单: >

我将字符串
s
定义为:

s='中文'
我需要将其编码为转义代码单元(
\u4e2d\u6587
),如下所示:

s2='\u4e2d\u6587'
我试过这个:

s1=unicode(s,'cp936') 
print type(s1)
但是它会打印
(如果我打印
s
,我会得到


如果重要的话,我使用的是Python 2.7.8。

s=中文'
在Python 2中是一个字节字符串,因此字节字符串的编码方式不明确。它将在源文件的编码中,但该信息丢失

但是,使用Unicode字符串进行转换非常简单:

>>> s = u'中文'
>>> type(s)
<type 'unicode'>
>>> b = s.encode('unicode_escape')
>>> b
'\\u4e2d\\u6587'
>>> type(b)
<type 'str'>
>>> print b
\u4e2d\u6587
>s=u'中文'
>>>类型
>>>b=s.encode('unicode_escape')
>>>b
“\\u4e2d\\u6587”
>>>类型(b)
>>>打印b
\u4e2d\u6587

s
不是unicode
s
是一个bytestring,即您发布它的方式。您的
s2
行无效;请在向我们展示示例时复制实际的python代码。是的,要从字节转换为unicode,您需要解码,但我不确定您这里的实际问题是什么。@MartijnPieters:我想op输入了
s=中文'
在编辑器中(UTF-8或其他格式),需要使用
s.decode('UTF-8')从中生成unicode字符串。
@myaut:但现在我们在这里进行二次猜测。我们没有错误输出,也没有明确的问题。@myaut:Adriano的解释可能是正确的,但我希望看到OP的确认。当然,社区可以按照正常的投票程序重新开放。:-)@MartijnPieters:哦,我没注意到所有的文字评论都来自Adriano。@jaz,不客气。在StackOverflow上,您可以通过选择答案左侧的复选框来接受问题的答案。