rut*_*ord 24 python string unicode ascii stringio
我得到了一个
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 34: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
存储在'a.desc'中的字符串,因为它包含'£'字符.它作为unicode字符串存储在底层Google App Engine数据存储区中,因此没问题.cStringIO.StringIO.writelines函数试图似乎试图以ascii格式对其进行编码:
result.writelines(['blahblah',a.desc,'blahblahblah'])
Run Code Online (Sandbox Code Playgroud)
如果这是正确的措辞,我如何指示它将编码视为unicode?
app引擎在python 2.5上运行
cod*_*ape 38
您可以将StringIO对象包装在对象中codecs.StreamReaderWriter
以自动编码和解码unicode.
像这样:
import cStringIO, codecs
buffer = cStringIO.StringIO()
codecinfo = codecs.lookup("utf8")
wrapper = codecs.StreamReaderWriter(buffer,
codecinfo.streamreader, codecinfo.streamwriter)
wrapper.writelines([u"list of", u"unicode strings"])
Run Code Online (Sandbox Code Playgroud)
buffer
将填充utf-8编码的字节.
如果我理解你的情况,你只需要写,所以你也可以这样做:
import cStringIO, codecs
buffer = cStringIO.StringIO()
wrapper = codecs.getwriter("utf8")(buffer)
Run Code Online (Sandbox Code Playgroud)
Phi*_*hil 22
与StringIO模块实现的内存文件不同,[cStringIO]提供的内存文件不能接受无法编码为纯ASCII字符串的Unicode字符串.
如果可能,请使用StringIO而不是cStringIO.