別のシステムの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-type')。getvalue()。encode('utf-8')
「コンテンツタイプ」
StringIO.StringIO(u'content-type')。getvalue()。encode('utf-8')。decode('utf-8')
u「コンテンツタイプ」
cStringIO.StringIO(u'content-type')。getvalue()。encode('utf-8')。decode('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-type')。getvalue()。encode('utf-8')。decode('utf-8')。decode('utf-32')
u「コンテンツタイプ」