2010-06-06 14 views
5

Tengo un script de Perl que imprime cierta información en la consola en ruso. El script se ejecutará en varios sistemas operativos, por lo que la codificación de la consola puede ser cp866, koi8-r, utf-8 o alguna otra. ¿Hay alguna manera portátil de detectar la codificación de la consola para que pueda configurarla como corresponde para que el texto se imprima correctamente?Autodetectar codificación de salida de consola en Perl

Respuesta

2

Si está en Windows, hay Win32::Codepage.

+0

El script se ejecutará en cualquier sistema operativo – n0rd

+0

En una consola de Windows, esta es la mejor solución que conozco. No conozco una forma de detectar la codificación de salida en Linux u otros sistemas similares a Unix. Normalmente configuro el terminal con codificación UTF-8 y lo uso para Perl. En Windows, hasta donde yo sé, no es posible configurar la página de códigos de la ventana del terminal. En cuanto a una solución portátil, sería genial, pero no sé si existe. –

+0

En la consola de Windows, la codificación se establece con el programa 'chcp', supongo que también hay una solución programática. De todos modos, forzar alguna codificación de consola particular no es una solución. – n0rd

1
+0

No funciona en Windows. Al menos no pude hacer que funcione. Creo que depende de las variables de entorno para detectar la codificación de la consola, que generalmente no están configuradas en Windows. – n0rd

1
+0

Eso es interesante: 'Term :: Encoding :: get_encoding()' devuelve 'utf-8' en mi Windows Server 2012 usando cygwin perl. 'chcp' muestra que la consola está realmente en' cp-437', pero los scripts perl pueden imprimir caracteres no latinos correctamente. Entonces estoy confundido ahora. – n0rd

+0

Descubra por qué el resultado del comando 'chcp' y la API [GetConsoleOutputCP] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms683169 (v = vs.85) .aspx) llamar no está de acuerdo. Pruebe con un Perl nativo en lugar de Cygwin. – daxim

Cuestiones relacionadas