En Tue, 29 May 2007 04:24:15 -0300, 人言落日是天涯,望极天涯不见家 <[EMAIL PROTECTED]> escribió:
> On 5月29日, 下午3时05分, "Martin v. Lo"wis" <[EMAIL PROTECTED]> wrote: >> > yes, it could print to the terminal(cmd.exe), but when I write these >> > string to file. I got the follow error: >> >> > File "E:\Tools\filegen\filegen.py", line 212, in write >> > self.file.write(data) >> > UnicodeEncodeError: 'ascii' codec can't encode character u'\u0394' in >> > position 0 >> > : ordinal not in range(128) >> >> Yes, when writing to a file, you need to define an encoding, e.g. >> >> self.file.write(data.encode("utf-8")) >> >> You can use codecs.open() instead of open(), >> so that you can just use self.file.write(data) >> > Thanks a lot! > I want to just use the utf-8. how could I convert my 'mbcs' encoding > to the utf-8 and write it to the file? > I have replaced the open() to codecs.open() > > but it still can not decode the 'mbcs', the error is as follow: > > File "E:\Tools\filegen\filegen.py", line 213, in write > self.file.write(data) > File "C:\Python25\lib\codecs.py", line 638, in write > return self.writer.write(data) > File "C:\Python25\lib\codecs.py", line 303, in write > data, consumed = self.encode(object, self.errors) > UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position > 32: ordinal > not in range(128) Just to provide an example of what MvL already said: py> line = u"Delta=\u0394" py> f = open("data.txt","w") py> f.write(line.encode("utf8")) py> f.close() py> print repr(open("data.txt").read()) 'Delta=\xce\x94' py> import codecs py> f = codecs.open("data2.txt","w","utf8") py> f.write(line) py> f.close() py> print repr(open("data2.txt").read()) 'Delta=\xce\x94' -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list