UTF8-Zeichen im Windows 10-Bash-Terminal


36

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?


5
Wenn jedes Zeichen als ein Quadratblock angezeigt wird , funktioniert UTF-8 bereits. Es ist die Schriftart, die Unicode-Unterstützung fehlt.
Grawity

Verwenden Sie chcp 65001, um die Codepage in UTF-8 zu ändern, und ändern Sie die Schriftart in Consolas
phuclv

Ich habe zur SimSun-Ext BSchriftart gewechselt und alle Zeichen werden korrekt angezeigt.
Ryan Foley

5
@grawity Ich benutzte uubntu mono und wechselte jetzt zu consolas. Anstelle einer leeren quadratischen Schachtel bekomme ich eine quadratische Schachtel mit einem Fragezeichen. Ich habe auch den chcp-Vorschlag ausprobiert, aber er ist bereits auf UTF-8-Codierung eingestellt, als ich die Eigenschaften überprüft habe.
Ortix92

2
Ich möchte darauf hinweisen , dass dieses Problem ist noch nicht gelöst , und dass ich immer noch nicht Unicode UTF - 8 - Zeichen korrekt angezeigt ZSH mit
Ortix92

Antworten:


12

Klicken Sie mit der rechten Maustaste auf die Titelleiste oben im Bash-Fenster und wählen Sie die Eintragseigenschaften aus. Im sich öffnenden Fenster 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.


Das ist die wahre Antwort. Sie können eine beliebige Schriftart auswählen, die UTF8 unterstützt. Ich habe Menlo installiert und dann vergessen, es in Bash-Optionen zu ändern, habe ehrlich gesagt nicht einmal darüber nachgedacht.
StalkAlex

Bitte beachten Sie, dass ich alle Standardoptionen in Windows (einschließlich Source Code Pro) ausprobiert habe und das Häkchen (✔) nur bei mir mit der von @ user3599934 vorgeschlagenen Schriftart "DejaVu Sans Mono" funktioniert hat!
Sevron

10

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 im Vergleich zu ASCII-Zeichen hell (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, keine Monospace-Unterstützung für CJK zu haben.
  • Ich habe Googles Inconsolata 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).


6

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


11
Während dies die Lösung des OP-Problems sein mag, ist es eher ein Hinweis als eine qualitativ hochwertige Antwort. Es kann verbessert werden, indem folgende Anweisungen gegeben werden: 1) Ändern der Schriftart für das Windows 10 Bash-Terminal; 2) wie man die besagte Schriftart installiert (es sei denn, es ist standardmäßig in jedem Windows 10 - ich bin unter Linux, ich weiß es nicht).
Kamil Maciorowski

1
Ich habe Ubuntu Mono vorher benutzt und hatte das Problem damit. DejaVu Sans Mono hat das Problem gelöst.
Smonff

0

Dies ist eigentlich eher ein Kommentar als eine Antwort, aber da SE mir nicht erlaubt, Kommentare abzugeben ...

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 codierten 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 an (vermutlich die UTF-8-Codierung von Unicode), 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, selbst 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).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.