通过另一个系统的cStringIO,我写了一些unicode:
u'content-length'.encode('utf-8')
并且在使用的时候读回来unicode( stringio_fd.read(),'utf-8'),我得到:
u'c\X00\X00\x00o\X00\X00\x00n\X00\X00\x00t\X00\X00\x00e\X00\X00\x00n\X00\X00\x00t\X00\X00\x00-\X00\X00\x00l\X00\X00\x00e\X00\X00\x00n\X00\X00\x00g\X00\X00\x00t\X00\X00\x00h\X00\X00\X00'
在终端上打印上面给了我正确的价值,但当然,我做不了什么有用的事情:
打印unicode("c\x00\x00\x00o\x00\x00\x00n\x00\x00\x00t\x00\x00\x00e\x00\x00\x00n\x00\x00\x00t\x00\x00\x00-\x00\X00\x00l\X00\X00\x00e\X00\X00\x00n\X00\X00\x00g\X00\X00\x00t\X00\X00\x00h\X00\X00\X00" )
内容长度
打印unicode("c\x00\x00\x00o\x00\x00\x00n\x00\x00\x00t\x00\x00\x00e\x00\x00\x00n\x00\x00\x00t\x00\x00\x00-\x00\x00\x00l\x00\x00\x00e\x00\x00\x00n\x00\x00\x00g\x00\x00\x00t\x00\x00\x00h\x00\x00\x00")== u'content-length'
假
将此字符串转换为等效于字符串的最快,最便宜的方法是u'content-type'什么?我无法改变cStringIO
虽然philhag的答案是正确的,但似乎问题是:
StringIO.StringIO(u'content型 ').的GetValue().编码(' UTF-8' )
'内容类型'
StringIO.StringIO(u'content型 ').的GetValue().编码(' UTF-8 ').解码(' UTF-8' )
u'content型"
cStringIO.StringIO(u'content型 ').的GetValue().编码(' UTF-8 ').解码(' UTF-8' )
u'c\X00\X00\x00o\X00\X00\x00n\X00\X00\x00t\X00\X00\x00e\X00\X00\x00n\X00\X00\x00t\X00\X00\x00-\X00\X00\x00t\X00\X00\x00y\X00\X00\x00p\X00\X00\x00e\X00\X00\X00'
cStringIO.StringIO(u'content型 ').的GetValue().编码(' UTF-8 ').进行解码(' UTF-8 ').解码(' UTF-32' )
u'content型"
一路上的事情是将您的值编码为UTF-32.简单地解码它们:
>>> b = u"c\x00\x00\x00o\x00\x00\x00n\x00\x00\x00t\x00\x00\x00e\x00\x00\x00\
... n\x00\x00\x00t\x00\x00\x00-\x00\x00\x00l\x00\x00\x00e\x00\x00\x00\
... n\x00\x00\x00g\x00\x00\x00t\x00\x00\x00h\x00\x00\x00"
>>> b.decode('utf-32')
u'content-length'
Run Code Online (Sandbox Code Playgroud)