Codificación UTF-8 (CHCP 65001) en PowerShell

  1. Unicode en PowerShell
  2. Cambiar la configuración regional del sistema para usar la codificación UTF-8 en Windows PowerShell
  3. Establecer la codificación en la variable $PSDefaultParameterValues para usar la codificación UTF-8 en Windows PowerShell
  4. Usar el comando chcp para cambiar a la codificación UTF-8 en Windows PowerShell
  5. Beneficios de usar la codificación UTF-8 en PowerShell
  6. Conclusión
Codificación UTF-8 (CHCP 65001) en PowerShell

La codificación UTF-8, representada por CHCP 65001 en PowerShell, es una herramienta fundamental para trabajar con caracteres multilingües y especiales en la consola. Este artículo proporcionará una guía completa sobre cómo utilizar la codificación UTF-8 en PowerShell, desde entender su importancia hasta su implementación práctica.

Unicode en PowerShell

Unicode es un estándar de codificación de caracteres a nivel mundial. Define cómo se representan los caracteres en archivos de texto, páginas web y otros documentos.

El sistema informático utiliza Unicode para manipular caracteres y cadenas. La codificación predeterminada en PowerShell es Windows-1252.

Unicode fue desarrollado para soportar caracteres de todos los idiomas del mundo. PowerShell soporta de forma predeterminada una codificación de caracteres Unicode.

UTF-8 y UTF-16 son las codificaciones Unicode más comunes. PowerShell siempre utiliza BOM en todas las codificaciones Unicode, excepto UTF7.

El BOM (byte-order-mark) es una firma Unicode incluida en los primeros bytes de un archivo o flujo de texto que indica la codificación Unicode.

Comprender la codificación UTF-8

UTF-8 es un estándar de codificación de caracteres que utiliza codificación de ancho variable para representar texto. Es capaz de codificar prácticamente todos los caracteres en Unicode, lo que lo convierte en la codificación de caracteres más utilizada en Internet.

En el contexto de PowerShell, la codificación UTF-8 asegura que los caracteres de diferentes idiomas, símbolos y caracteres especiales se muestren y procesen correctamente en la ventana de la consola.

Cambiar la configuración regional del sistema para usar la codificación UTF-8 en Windows PowerShell

Hay una opción para cambiar la configuración regional del sistema (idioma actual para programas no Unicode) en Windows. Pero esta función aún está en beta.

Ve a Configuración regional desde el Panel de control o abre intl.cpl desde el programa Ejecutar (Windows+R).

cambiar la configuración regional del sistema para usar la codificación UTF-8 en PowerShell

Abre la pestaña Administrativa y haz clic en Cambiar la configuración regional del sistema. Luego, marca la opción Beta, como se muestra en la imagen a continuación.

utiliza unicode UTF-8 para el soporte de idiomas en todo el mundo

Después de eso, presiona Aceptar y reinicia el ordenador para aplicar la configuración.

Después de reiniciar el ordenador, puedes comprobar la variable $OutputEncoding para ver la codificación actual.

$OutputEncoding

Salida:

Como puedes ver, la codificación actual es Unicode (UTF-8).

BodyName          : utf-8
EncodingName      : Unicode (UTF-8)
HeaderName        : utf-8
WebName           : utf-8
WindowsCodePage   : 1200
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.EncoderReplacementFallback
DecoderFallback   : System.Text.DecoderReplacementFallback
IsReadOnly        : True
CodePage          : 65001

Ahora, puedes ver los caracteres de otros idiomas en PowerShell.

Get-Content test.txt

Salida:

만나서 반가워요

Establecer la codificación en la variable $PSDefaultParameterValues para usar la codificación UTF-8 en Windows PowerShell

$PSDefaultParameterValues es una variable automática integrada en PowerShell que te permite establecer valores predeterminados para los parámetros de los cmdlets. Esto significa que puedes especificar valores predeterminados para los parámetros de los cmdlets sin tener que proporcionarlos explícitamente cada vez que usas el cmdlet.

Puedes ejecutar el siguiente comando para activar la codificación UTF-8 en PowerShell.

$PSDefaultParameterValues = @{'*:Encoding' = 'utf8' }

Es válido solo para la consola de PowerShell actual. Se restablecerá a la configuración predeterminada después de salir de la ventana de PowerShell.

Get-Content test.txt

Salida:

만나서 반가워요

Varios cmdlets en PowerShell tienen el parámetro -Encoding para especificar la codificación para diferentes conjuntos de caracteres. Algunos de ellos son Add-Content, Set-Content, Get-Content, Export-Csv, Out-File, etc.

El parámetro -Encoding admite estos valores: ascii, bigendianunicode, oem, unicode, utf7, utf8, utf8BOM, utf8NoBOM, utf32.

Usar el comando chcp para cambiar a la codificación UTF-8 en Windows PowerShell

Para cambiar a la codificación UTF-8 en PowerShell, usa el comando chcp seguido de 65001:

chcp 65001

Este comando indica a PowerShell que use la codificación UTF-8 para la entrada y salida de caracteres.

Aquí está lo que hace este comando en detalle:

  • chcp: Este es un comando en el símbolo del sistema de Windows y PowerShell. Significa "Cambiar la página de código". La página de código determina cómo se codifican y muestran los caracteres en la ventana de la consola.

  • 65001: En este contexto, 65001 representa la página de código para la codificación UTF-8. UTF-8 es una codificación de caracteres de ancho variable capaz de codificar todos los posibles caracteres, o puntos de código, en Unicode.

    • UTF-8: Es una codificación de caracteres ampliamente utilizada que puede representar casi todos los caracteres de todos los idiomas humanos. Es especialmente prevalente en Internet.
  • Cambiar a UTF-8 (65001): Cuando ejecutas chcp 65001, le estás diciendo a PowerShell que use la codificación UTF-8 para la entrada y salida de caracteres en la consola. Esto puede ser útil cuando trabajas con datos de texto que incluyen caracteres de diferentes idiomas y símbolos.

    Por ejemplo, si estás tratando con archivos o datos que contienen caracteres no ingleses, establecer la página de código a UTF-8 asegura que estos caracteres se muestren correctamente en la consola.

Restablecer a la página de código predeterminada

Recuerda que cambiar la página de código puede afectar cómo se comportan algunas aplicaciones de consola, por lo que generalmente es una buena práctica restablecerla a la página de código predeterminada (por lo general 437 para inglés) cuando terminas de usar UTF-8.

Para restablecer la página de código a la predeterminada, puedes usar el comando:

chcp 437

Esto volverá a cambiar a la página de código predeterminada para tu sistema, que es adecuada para texto en inglés.

Beneficios de usar la codificación UTF-8 en PowerShell

  1. Soporte multilingüe: UTF-8 permite que PowerShell maneje texto en varios idiomas, asegurando la correcta visualización y procesamiento de caracteres de diferentes escrituras.
  2. Caracteres especiales: Es crucial cuando se trata de caracteres especiales como emojis o símbolos matemáticos que no están representados en codificaciones estándar.
  3. Manejo de archivos: Al trabajar con archivos de texto que incluyen caracteres de varios idiomas, usar UTF-8 asegura operaciones de archivo precisas.
  4. Procesamiento de datos: Si trabajas con datos que contienen caracteres no ingleses, establecer la página de código a UTF-8 asegura un manejo y procesamiento correcto.

Consideraciones potenciales

  1. Aplicaciones de consola: Cambiar la página de código puede afectar cómo se comportan algunas aplicaciones de consola. Siempre restablece a la página de código predeterminada (chcp 437 para inglés) cuando termines de usar UTF-8.
  2. Compatibilidad: Asegúrate de que los programas o scripts que estás ejecutando en PowerShell puedan manejar la codificación UTF-8. Las aplicaciones más antiguas pueden no ser totalmente compatibles.

Casos de uso prácticos

  1. Lectura de archivos: Al leer archivos de texto con caracteres no ingleses, usar UTF-8 asegura una representación precisa.
  2. Web Scraping: Si estás extrayendo texto de sitios web que pueden contener caracteres de varios idiomas, UTF-8 asegura una interpretación correcta.
  3. Salidas de script: Si tus scripts generan salidas con caracteres no ingleses, usar UTF-8 asegura que se muestren correctamente.
  4. Sesiones interactivas de PowerShell: Para sesiones interactivas donde necesitas ingresar o salir texto con caracteres especiales, la codificación UTF-8 es invaluable.

Conclusión

La codificación UTF-8 (CHCP 65001) en PowerShell es una herramienta poderosa para manejar caracteres multilingües y especiales en la consola. Permite una representación y procesamiento precisos del texto de varios idiomas y escrituras. Entender cuándo y cómo usar la codificación UTF-8 asegura una experiencia sin problemas al trabajar con conjuntos diversos de caracteres.

Recuerda considerar la compatibilidad de programas o scripts con UTF-8 y siempre volver a la página de código predeterminada cuando sea necesario. Al aprovechar el poder de la codificación UTF-8, estarás equipado para manejar una amplia gama de datos de texto con confianza y precisión en PowerShell.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website