¿Por qué recibo un error de encoding ASCII con datos Unicode en Python 2.4 pero no en 2.7?

Tengo un progtwig que, cuando se ejecuta en Python 2.7, produce una salida Unicode adecuada a la salida estándar. Cuando se ejecuta en Python 2.4, obtengo UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-4: ordinal not in range(128) . ¿Qué cambió entre la versión 2.4 y 2.7 que esto funciona ahora?

Aunque no pude encontrar ninguna mención al respecto, parece que Python 2.7 está convirtiendo automáticamente el texto a la encoding del terminal, en lugar de lanzar un error como se esperaba.

Python 2.7:

 > echo $LANG en_US.UTF-8 > python -c 'import sys; print sys.getdefaultencoding()' ascii > python -c 'import sys; sys.stdout.write(u"\u03A3")' Σ > python -c 'import sys; sys.stdout.write(u"\u03A3".encode("utf8"))' Σ 

Python 2.6 (en otra caja)

 > echo $LANG en_US.UTF-8 > python -c 'import sys; print sys.getdefaultencoding()' ascii > python -c 'import sys; sys.stdout.write(u"\u03A3")' Traceback (most recent call last): File "", line 1, in  UnicodeEncodeError: 'ascii' codec cant encode character u'\u03a3' in position 0: ordinal not in range(128) > python -c 'import sys; sys.stdout.write(u"\u03A3".encode("utf8"))' Σ 

En cualquier caso, un .encode (“utf8”) en los datos antes de la salida debería evitar el problema.