Alex Baraibar wrote: > Hi, Peter. > Sorry for the delay, I've been out for a while. > So I did what you suggested and it prints the following: > > " > import sys > print >> sys.stderr, sys.stdout.encoding > > what does the above print > (a) when you print to the console? it prints cp850 > (b) when you redirect to a file? it prints None
That's as expected. You should normally get an exception like Traceback (most recent call last): File "tmp_enc.py", line 33, in <module> print element UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 11: ordinal not in range(128) when you redirect your script's output to a file. Did you change the default encoding? If you didn't you probably have an ill- behaved application on your system that did it without asking. > Any suggestions? Check stdout.encoding, and if it is None (unknown encoding) wrap the stdout stream into a Writer. Your script with that modification: # -*- coding: cp1252 -*- def festivos(): fest = [ 'Any Nou:\t\t\t1 de enero', 'Reis:\t\t\t\t6 de enero', 'Festa del Treball:\t\t1 de mayo', 'Sant Joan:\t\t\t24 de junio', u'La Assumpció:\t\t\t15 de agosto', 'La Diada:\t\t\t11 de septiembre', u'La Mercè:\t\t\t24 de septiembre', 'La Hispanitat:\t\t\t12 de octubre', 'Tots Sants:\t\t\t1 de novembre', u'La Constitució:\t\t\t6 de desembre', u'La Concepció:\t\t\t8 de desembre', 'Nadal:\t\t\t\t25 de desembre', 'Sant Esteve:\t\t\t26 de desembre' ] return fest def separador( num, char ): return char * num # --- Main --- import sys if sys.stdout.encoding is None: import codecs Writer = codecs.getwriter("latin-1") sys.stdout = Writer(sys.stdout) dias = festivos() print "Los festivos fijos anuales son:\n" for element in dias: sep = separador( 50, '-' ) # move that out of the loop print element print sep Peter _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor