it-swarm.com.de

UTF8-Zeichen im Windows 10-Bash-Terminal

Ich habe die neue Bash-Shell unter Windows 10 installiert. Ich verwende sie zusammen mit ZSH. Keines der utf8-Zeichen funktioniert jedoch, sie werden als quadratische Blöcke angezeigt. Wie aktiviere ich die utf8-Zeichenkodierung in der Shell als Standard? Ist das möglich?

32
Ortix92

Klicken Sie mit der rechten Maustaste auf die Titelleiste oben im Bash-Fenster und wählen Sie die Eintragseigenschaften aus. Im Eröffnungsfenster befindet sich eine Registerkarte, auf der Sie die Schriftart ändern können. Ich habe die Schriftart in "Source Code Pro" und Größe 14 geändert.

Sieht gut aus und alle UTF-8-Zeichen funktionieren.

10
Doctorj

Um die Antwort von Doctorj zu ergänzen, gibt es einige Schriften, die standardmäßig installiert sind und die Sie verwenden können (unter Windows 10 bash Shell).

Geprüfte Sprachen: Bulgarisch, Ukrainisch, Chinesisch (vereinfacht), Chinesisch (traditionell), Dänisch, Französisch, Deutsch, Italienisch, Japanisch, Kasachisch, Koreanisch, Mazedonisch, Mongolisch, Norwegisch, Polnisch, Portugiesisch, Russisch, Serbisch, Spanisch, Schwedisch.

Die folgenden Standardschriftarten zeigen alle beobachteten Zeichen an:

  • MS Gothic
  • NSimSun
    • Scheint nicht ganz Kasachisch anzuzeigen.
  • SimSun-ExtB (Rasterfont) - Meine Empfehlung

Sowohl MS Gothic als auch NSimSun

  • Platzhalter für nicht-lateinische Sprachen ohne CJK (Chinesisch, Japanisch, Koreanisch) (Mazedonisch, Kasachisch, Bulgarisch).
  • Hat einen ungeraden vertikalen Versatz bei lateinischen Akzentzeichen (á, é).
  • Mindestens ein mazedonisches Zeichen wurde nicht angezeigt.

SumSun-ExtB (Rasterschrift):

  • Es wird eine Warnmeldung angezeigt, die besagt, dass Raster-Schriftarten möglicherweise nicht gut angezeigt werden.
  • Die meisten Zeichen werden dunkel angezeigt (möglicherweise liegt ein Problem mit der geringen Bildschirmhelligkeit vor).
  • Nicht-ASCII-Zeichen sind hell im Vergleich zu ASCII-Zeichen (mögliche Lösung: Verwenden Sie die fett gedruckte Option).
  • Zeichen aller Sprachen liegen nahe beieinander (der Abstand zwischen den Wörtern ist leichter zu erkennen).
  • Scheint zuverlässiger für Nicht-Latein-Nicht-CJK-Sprachen.

Bei jeder dieser Schriftarten, sowohl bei der Eingabeaufforderung als auch bei PowerShell, passieren seltsame Dinge, wenn Sie auf Nicht-ASCII-Zeichen klicken, obwohl dies beim Hervorheben des Texts wieder normal ist.

So installieren Sie eine Schriftart: Beachten Sie, dass Sie die Schriftart für die von Ihnen verwendete Windows-Shell ändern müssen, z. B. die Eingabeaufforderung oder PowerShell, nicht die Linux-Methode für Bash. Dieser Link beschreibt, welche Schriftarten in der Eingabeaufforderung verwendet werden können (Monospace-Schriftarten und wie eine Schriftart für die Eingabeaufforderung installiert und ausgewählt wird): Fügen Sie der Eingabeaufforderung Schriftarten hinzu

  • Rufe den Registrierungseditor auf (starte "regedit")
  • Suchen Sie den Ordner HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
  • Rechtsklick (oder Bearbeiten) -> Neu -> Zeichenkettenwert
  • Benennen Sie die Schriftart mit einer 0 mehr als der letzten (wie "000").
  • Klicken Sie mit der rechten Maustaste auf den Eintrag und wählen Sie "Ändern ...".
  • Geben Sie den Namen der Schriftart oder der OTF-Datei (ohne .otf) ein.

Informationen zum Installieren von Schriftarten über die Befehlszeile unter Windows finden Sie in dieser Frage und den Antworten.

  • Ich habe versucht, "Source Code Pro" zu installieren, aber es wurde für mich nicht in den Schriften angezeigt.
  • Ich habe DejaVu Sans Mono installiert und es funktioniert für die meisten Sprachen, aber überhaupt nicht für CJK.
  • Ich habe die Monospace-Schriftart Noto von Google installiert, und sie hat funktioniert, aber nicht für CJK. Außerdem geben sie ausdrücklich an, dass sie keine Monospace-Unterstützung für CJK haben.
  • Ich habe die Inconsolata von Google installiert und es war den Versuch nicht wert.
  • Ich habe GNU FreeFont (FreeMono) installiert und es hat funktioniert, aber nicht für CJK.
  • Ich gab auf und ging zurück zu SimSun-ExtB.

(Hinweis: Ich habe noch nicht genug Reputation, um die Links zu posten).

9
Joshua Mathias

Sie können DejaVu Sans Mono ausprobieren - es funktioniert bei mir.

5
user3599934

Dies ist eigentlich eher ein Kommentar als eine Antwort, aber da SE es mir nicht erlaubt zu kommentieren ...

Sie haben nicht genügend Informationen angegeben. Unicode bietet über eine Million möglicher Zeichen, von denen über 100.000 definiert wurden. (Die übrigen sind für den Kontakt mit Außerirdischen bestimmt oder eher für die noch nicht verschlüsselten Schreibsysteme von Earthlings.) Diese sind in etwa 150 Skripte unterteilt: Latein, Kyrillisch, Arabisch, Chinesisch ... Es wird keine Schriftart verwendet Glyphen (Bilder von Charakteren) für all diese Charaktere zu liefern. (Es gibt ein oder zwei, die eine Box mit dem Codepunkt darin liefern, aber das ist nicht das, was Sie wollen.)

Wie Grawity vor über zwei Jahren sagte, zeigt Ihre Anwendung bereits Unicode (vermutlich die UTF-8-Codierung von Unicode) an, wenn Sie eine Box erhalten, in der Sie ein einzelnes Zeichen erwarten. Was Ihnen fehlt, ist eine Schriftart, die Glyphen für die anzuzeigenden Skripte enthält. Wenn Sie Russisch anzeigen, möchten Sie eine Schriftart mit kyrillischen Zeichen. Wenn Sie Chinesisch anzeigen möchten, benötigen Sie eine Schriftart mit diesen Zeichen. (Die meisten dieser Schriftarten zeigen auch lateinische Zeichen an - die Art, die wir für Englisch verwenden -, aber nicht unbedingt hübsch.)

Meine Frage an Sie lautet also: Welches Skript möchten Sie anzeigen? Bis wir das wissen, werden alle Antworten Vermutungen sein.

Übrigens gibt es einige Skripte, die ziemlich kompliziert sind, und nur einige Programme zeigen sie korrekt an, auch wenn Sie die richtige Schriftart haben. Dazu gehören Burmesisch, einige indische Skripte (z. B. Devanagari) und Arabisch (das von rechts nach links geschrieben wird und Zeichen enthält, die je nach benachbarten Zeichen unterschiedlich angezeigt werden sollten).

0
Mike Maxwell