python:TypeError:无法将unicode写入二进制流

时间:2013-11-14 06:21:11

标签: python unicode

我有以下代码:

file = io.open(tFile,'wb') 
if cData != '':
    file.write('%s\n' % (cData))

其中cData是一个字符串。该代码在Linux和Windows上运行良好,但在我遇到错误的所有Solaris机器上都失败了:

  

文件“/usr/local/lib/python2.6/io.py”,第1045行,写入       引发TypeError(“无法将unicode写入二进制流”)   TypeError:无法将unicode写入二进制流

这里有什么问题?感谢

1 个答案:

答案 0 :(得分:2)

io.open用于与Unicode数据交互。如果要编写字节字符串(即Python 2 str),请使用内置的open函数。

如果你真的想使用io.open,你需要解码你的字符串(如果它是可解码的)

file.write(('%s\n' % (cData)).decode())

或使用Unicode文字

file.write(u'%s\n' % (cData))

我假设你在这里理解基本的字符串编码原则。如果cData与ASCII不兼容,您需要自己提供适当的编码名称。