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

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).
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.
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 ejecutaschcp 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
- 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.
- 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.
- Manejo de archivos: Al trabajar con archivos de texto que incluyen caracteres de varios idiomas, usar UTF-8 asegura operaciones de archivo precisas.
- 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
- 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. - 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
- Lectura de archivos: Al leer archivos de texto con caracteres no ingleses, usar UTF-8 asegura una representación precisa.
- Web Scraping: Si estás extrayendo texto de sitios web que pueden contener caracteres de varios idiomas, UTF-8 asegura una interpretación correcta.
- Salidas de script: Si tus scripts generan salidas con caracteres no ingleses, usar UTF-8 asegura que se muestren correctamente.
- 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.