2011-02-16 6 views
7

Tengo un programa de línea de comandos escrito en Python, y cuando lo canalizo a través de otro programa en la línea de comandos, sys.stdout.encoding es None. Esto tiene sentido, supongo, la salida podría ser otro programa, o un archivo al que lo está redirigiendo, o lo que sea, y no sabe qué codificación desea. ¡Pero yo tampoco! Este programa será utilizado por muchas personas diferentes (me gusta) de diferentes maneras. ¿Debería ir a lo seguro y dar como resultado solo ascii (reemplazando caracteres no ascii con signos de interrogación)? ¿O debería emitir UTF-8, ya que está tan extendido en estos días?Si un programa de línea de comando no está seguro de la codificación de stdout, ¿qué codificación debería emitir?

Respuesta

7

Le sugiero que utilice la configuración regional actual.

Python2> import locale 
Python2> locale.getpreferredencoding() 
'UTF-8' 

el sistema sabe lo que debería ser, y el otro lado, si también utiliza la localización actual, va a hacer lo correcto.

+0

Esto se ve perfecto. ¡Gracias! – mackstann

0

Deberías producir UTF-8 porque eso es lo que todos deben usar. Es un error no ser. ;)

+0

Lo siento, esto es más de un comentario que una respuesta constructiva. – Weboide

1

si su aplicación realmente no se ocupa de una gran cantidad de internacionalización, ascii debería ser suficiente. pero si no, diría que utf-8 o mejor todavía utf-16 debería estar a la orden del día.

+0

El objetivo de UTF-8 es que los programas que no se ocupan explícitamente de la internacionalización en su mayoría solo funcionan en datos que no son ASCII. UTF-16 es un mal arranque en Linux; incluso en Windows nunca es apropiado cuando solo estás adivinando. –

Cuestiones relacionadas