Caracteres UTF8 en el terminal bash de windows 10

36

He instalado el nuevo shell bash en Windows 10. Lo estoy usando junto con ZSH. Sin embargo, ninguno de los caracteres utf8 funciona, aparecen como bloques cuadrados. ¿Cómo habilito la codificación de caracteres utf8 en el shell por defecto? ¿Es eso posible?

Ortix92
fuente
55
Si cada personaje aparece como un bloque cuadrado, UTF-8 ya funciona; es la fuente que carece de soporte Unicode.
Grawity
use chcp 65001para cambiar la página de códigos a UTF-8 y cambiar la fuente a Consolas
phuclv
Cambié a la SimSun-Ext Bfuente y todos los caracteres se muestran correctamente.
Ryan Foley
55
@grawity Estaba usando uubntu mono y ahora cambié a consolas. En lugar de un cuadro cuadrado vacío, obtengo un cuadro cuadrado con un signo de interrogación dentro. También probé la sugerencia de chcp pero ya está configurada para la codificación UTF-8 cuando verifiqué las propiedades.
Ortix92
2
Me gustaría señalar que este problema aún no está resuelto y que todavía no puedo mostrar correctamente los caracteres utf8 unicode usando ZSH
Ortix92

Respuestas:

12

Haga clic derecho en la barra de título en la parte superior de la ventana de bash, elija las propiedades de entrada. En la ventana de apertura hay una pestaña donde puede cambiar la fuente. Cambié la fuente a "Source Code Pro" y tamaño 14.

Se ve bien y todos los caracteres utf-8 están funcionando.

Doctorj
fuente
Esa es la verdadera respuesta. Puede elegir la fuente que desee que sea compatible con UTF8. Instalé Menlo y luego olvidé cambiarlo en las opciones de bash, honestamente ni siquiera lo pensé.
StalkAlex
Tenga en cuenta que he probado todas las opciones predeterminadas en Windows (incluido Source Code Pro) y el carácter de marca de verificación (✔) solo funcionó para mí con la fuente "DejaVu Sans Mono" sugerida por @ user3599934.
Sevron
10

Para agregar a la respuesta de Doctorj, hay un par de fuentes que se instalan de manera predeterminada que puede usar (en Windows 10 bash shell).

Idiomas probados: búlgaro, ucraniano, chino simplificado, chino tradicional, danés, francés, alemán, italiano, japonés, kazajo, coreano, macedonio, mongol, noruego, polaco, portugués, ruso, serbio, español, sueco.

Las siguientes fuentes predeterminadas muestran todos los caracteres observados:

  • MS Gothic
  • NSimSun
    • No parece mostrar todo el kazajo.
  • SimSun-ExtB (fuente raster) - Mi recomendación

Tanto MS Gothic como NSimSun

  • Espacia los idiomas no latinos, no CJK (chino, japonés, coreano) (macedonio, kazajo, búlgaro).
  • Tiene un desplazamiento vertical extraño en caracteres latinos acentuados (á, é).
  • No muestra al menos un personaje macedonio.

SumSun-ExtB (fuente ráster):

  • Hay un mensaje de advertencia que dice que las fuentes Raster pueden no mostrarse bien.
  • La mayoría de los caracteres se muestran oscuros (podría ser un problema con un brillo de pantalla bajo).
  • Los caracteres no ASCII son brillantes, en comparación con los caracteres ASCII (posible solución, use la opción en negrita).
  • Caracteres de todos los idiomas muy juntos (es más fácil ver el espacio entre palabras).
  • Parece más confiable para los idiomas no latinos que no son CJK.

Con cualquiera de estas fuentes, tanto Símbolo del sistema como PowerShell, suceden cosas extrañas cuando hace clic en caracteres que no son ASCII, aunque vuelve a la normalidad cuando resalta el texto.

Para instalar una fuente: Tenga en cuenta que debe cambiar la fuente para el shell de Windows que está utilizando, como el Símbolo del sistema o PowerShell, no la forma de Linux a través de bash. Este enlace describe qué fuentes se pueden usar en el Símbolo del sistema (fuentes monoespaciales y cómo instalar y seleccionar una fuente para el Símbolo del sistema): Agregar fuentes al Símbolo del sistema

  • Abra el Editor del registro (ejecute "regedit")
  • Busque la carpeta HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Console \ TrueTypeFont
  • Haga clic derecho (o Editar) -> Nuevo -> Valor de cadena
  • Nombre la fuente con un 0 más que el último (como "000").
  • Haga clic derecho en la entrada y seleccione "Modificar ..."
  • Ingrese el nombre de la fuente o el archivo OTF (sin .otf).

Para obtener información sobre la instalación de fuentes a través de la línea de comandos en Windows, consulte esta pregunta y sus respuestas.

  • Intenté instalar "Source Code Pro" pero no apareció en las fuentes.
  • Instalé DejaVu Sans Mono y funciona para la mayoría de los idiomas, pero no funciona para CJK.
  • Instalé la fuente monoespacial Noto de Google, y funcionó, pero no para CJK. Además, dicen específicamente que no tienen soporte monoespacial para CJK.
  • Instalé Inconsolata de Google, y no valió la pena intentarlo.
  • Instalé GNU FreeFont (FreeMono), y funcionó, pero no para CJK.
  • Me di por vencido y volví a SimSun-ExtB.

(Nota: todavía no tengo suficiente reputación para publicar los enlaces).

Joshua Mathias
fuente
6

Puedes probar DejaVu Sans Mono, funciona para mí.

usuario3599934
fuente
11
Si bien esta puede ser la solución al problema del OP, es más una pista que una respuesta de alta calidad. Se puede mejorar dando instrucciones sobre: ​​1) cómo cambiar la fuente para el terminal Bash de Windows 10; 2) cómo instalar dicha fuente (a menos que esté en cada Windows 10 de forma predeterminada; estoy en Linux, no lo sé).
Kamil Maciorowski el
1
Utilicé Ubuntu Mono antes y tuve el problema con él. DejaVu Sans Mono resolvió el problema.
smonff
0

Esto es realmente más un comentario que una respuesta, pero dado que SE no me permite comentar ...

No has proporcionado suficiente información. Unicode proporciona más de un millón de caracteres posibles, de los cuales se han definido más de 100,000. (Los restantes son para cuando contactamos con extraterrestres, o más probablemente para los sistemas de escritura de los terrícolas que aún no se han codificado). Estos se dividen en alrededor de 150 guiones: latín, cirílico, árabe, chino ... No hay fuente para proporcionar glifos (imágenes de caracteres) para todos esos caracteres. (Hay uno o dos que proporcionan una caja con el punto de código dentro, pero eso no es lo que desea).

Como dijo Grawity hace más de dos años, si obtiene un cuadro donde espera un solo carácter, entonces su aplicación ya está mostrando Unicode (presumiblemente la codificación UTF-8 de Unicode). Lo que le falta es una fuente que proporcione glifos para cualquier script que desee mostrar. Si está mostrando ruso, querría una fuente con caracteres cirílicos; si desea mostrar chino, necesita una fuente con esos caracteres. (La mayoría de esas fuentes también mostrarán caracteres latinos, del tipo que usamos para inglés, pero no necesariamente bonitos).

Entonces mi pregunta para usted es: ¿qué script está tratando de mostrar? Hasta que sepamos eso, todas las respuestas serán conjeturas.

Por cierto, hay algunos scripts que son bastante complicados, y solo algunos programas los mostrarán correctamente, incluso si tiene la fuente correcta. Entre estos están el birmano, algunos guiones índicos (Devanagari, por ejemplo) y el árabe (que se escribe de derecha a izquierda y tiene caracteres que deberían mostrarse de manera diferente dependiendo de los caracteres adyacentes).

Mike Maxwell
fuente