0

我有以下代码:

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

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

文件“/usr/local/lib/python2.6/io.py”,第 1045 行,在 write raise TypeError("can't write unicode to binary stream") TypeError: can't write unicode to binary stream

这里有什么问题?谢谢

4

1 回答 1

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,您需要自己提供适当的编码名称。

于 2013-11-14T06:29:11.607 回答