2008-12-18 9 views
48

Vorausgesetzt, ich habe Schriftarten installiert, die die entsprechenden Glyphen enthalten, gibt es eine Befehlsshell für Windows XP, die Unicode-Zeichen anzeigen wird? Mindestens zwei Dinge, die Unicode korrekt anzeigen sollten:Gibt es eine Windows-Befehlsshell, die Unicode-Zeichen anzeigt?

  • Verzeichnislisten. Es ist mir egal, was ich eingeben muss (dir, ls, get-childitem usw.), solange Dateien mit Unicode-Zeichen in ihren Namen mit den richtigen Glyphen und nicht mit dem nicht druckbaren Zeichenfeld angezeigt werden.
  • Textdateiinhaltslisten. Auch hier ist es egal, ob es "weniger", "mehr", "Katze", "Hund" usw. ist, solange die Charaktere gedruckt werden. Ich erkenne, dass dies wegen der Zeichencodierung der Datei komplizierter ist. Wenn ich das in der Befehlszeile angeben muss, ist das für mich in Ordnung.

Hier ist, was ich bisher ausprobiert habe:

  • Windows Powershell
    • cmd.exe; einschließlich der mehrsprachigen Version.
    • Cygwin bash

    Kein Glück. Ich habe sogar versucht, custom fonts for cmd/PowerShell zu installieren. PowerShell und cmd.exe scheinen in dem Sinne Unicode-fähig zu sein, dass ich die nicht druckbare Box dort kopieren und einfügen kann und sie in andere Apps mit den richtigen Zeichen einfügen kann. Cygwin (?) Scheint sich in die? Charakter und das kommt durch das Kopieren/Einfügen.

    Irgendwelche Ideen?

  • Antwort

    18

    Dies war ein großes Problem in PowerShell v1. Version 2 wird mit einer "graphischen Shell" ausgeliefert, die das Problem behebt, was letztlich nicht mit PowerShell, sondern mit dem Windows-Konsolenhost (den Cmd.exe ebenfalls verwendet). Sie können das aktuelle CTP für PowerShell v2 erhalten, wenn Sie möchten.

    Eigentlich wurde PowerShell v2.0 fertiggestellt und Anfang August mit der Veröffentlichung von Windows 7 und Windows Server 2008 R2 ausgeliefert. Darüber hinaus haben die rückportierten Versionen (Windows   Vista/2008) erst kürzlich ihren Release Candidate-Meilenstein erreicht; Windows   XP/Windows Server 2003 sollte in Kürze folgen. Linky linky.

    +1

    Upvoted für eine funktionierende Lösung für das Problem vorgeschlagen. Ich würde es akzeptieren, außer dass ich Hoffnung auf etwas Besseres halte. Als "frühes Alpha" hat es einen langen Weg vor sich, um eine wirklich brauchbare Hülle zu sein. –

    +1

    Das aktuelle CTP3 ist unglaublich stabil und, leider, ist es die einzige Lösung, die es heutzutage nicht gibt, Geld zu bezahlen. –

    +0

    Da dieses alte Thema kürzlich an die Spitze der Liste gerückt wurde, habe ich die primäre Antwort mit einem Link zu den neuesten Powershell-Bits bearbeitet. –

    2

    Für eine echte Shell, versuchen Sie PowerShell Plus. Sie können Unicode-Schriftarten auswählen und mit anderen Sprachen arbeiten, nicht nur im Editor, sondern auch in der echten Konsole.

    0

    Versuchen Sie Console 2. Seien Sie jedoch vorsichtig mit den Farben/Palettenkonfigurationen. Die sind ein bisschen fehlerhaft. Ich habe bestätigt, dass sie nicht arbeiten; Sie verhalten sich wie cmd.exe.

    +1

    Auf Ihren Vorschlag habe ich es versucht und es scheint nicht mein Problem zu lösen. Das Ausführen von 'dir' in einem Verzeichnis mit Dateien, deren Namen koreanische Zeichen enthalten, führt zu 's. Dieses Verhalten ist dasselbe wie cmd.exe. –

    +0

    Ok. Console2 benutzt wahrscheinlich auch den Windows-Konsolen-Host, nur mit einem schöneren Frontend. –

    6

    Die Einstellung der Codepage auf UTF-8 mit dem Befehl "chcp 65001" sollte Ihnen helfen, Dateiinhalte korrekt in die Shell zu drucken (mit cmd.exe). Dies funktioniert jedoch nicht für Verzeichnislisten (UTF-16-Codierung in NTFS-Dateinamen).

    +0

    Schöne Antwort. Dies funktioniert auch in Powershell. –

    39

    Um dies zu tun mit cmd.exe, müssen Sie den Konsoleneigenschaften Dialog verwenden, um zu einer Unicode TrueType-Schriftart zu wechseln.

    Dann verwenden diese Befehle:

    CHCP 65001 
    DIR > UTF8.TXT 
    TYPE UTF8.TXT 
    

    Befehle:

    • Schalterkonsole auf UTF-8 (65001)
    • Umleiten Ausgang DIR UTF8.TXT
    • Dump UTF-8 zur Konsole

    Die Zeichen müssen weiterhin von der Schriftart unterstützt werden, damit sie auf der Konsole korrekt angezeigt werden.

    I18N: Unicode at the Windows command prompt (C++; .Net; Java)

    +0

    Das ist der richtige Weg! Danke McDowell! –

    +0

    Nach https://stackoverflow.com/questions/14109024/how-to-make-unicode-charset-in-cmd-exe-by-default, CP 65001 löst nicht alle Probleme mit Unicode-Unterstützung, so ist dies ein fehlerhafte Lösung. –

    0

    PowerShell V2 CTP3 innerhalb Console2 scheint das zu tun. Der einzige Nachteil ist, dass die Standard-Konsolencodierung UCS-2 LE anstelle von UTF-8 ist.

    2

    Dies ist, wie ich chinesische Ausgabe in cmd.exe unter Windows 7 Pro English Version bekommen kann. Ich habe auch Dateinamen mit Japanisch, Russisch und Polnisch ausprobiert und sie scheinen alle korrekt angezeigt zu werden. Die Eingabe scheint auch zu funktionieren, zumindest wenn ich versuchte, eine dir xxx* mit nicht-ASCII-Zeichen zu machen.

    1. console2 installieren, das ein Front-End zu cmd.exe ist (und andere Schalen)

    2. Nach der Installation folgt these instructions

      den Schlüssel HKEY_CURRENT_USER\Console\Console2 command window in der Registrierung löschen.

      Importieren Sie die folgenden Daten in Windows-Registry:

      Windows Registry Editor Version 5.00 
      [HKEY_CURRENT_USER\Console\Console2 command window] 
      "CodePage"=dword:000003a8 
      "FontSize"=dword:000a0000 
      "FontFamily"=dword:00000036 
      "FontWeight"=dword:00000190 
      "FaceName"="細明體" 
      "HistoryNoDup"=dword:00000000 
      
    3. Sie können oder müssen nicht die Schriftart ändern. Anfangs hatte ich die Schrift auf @NimSum eingestellt, und die chinesischen Schriftzeichen kamen um 90 Grad gedreht heraus. Dann wechselte ich auf NimSum (ohne @) und es kam richtig raus. Dann wechselte ich aus reiner Neugier zu Consola und trotzdem kann ich die chinesischen Schriftzeichen sehen. Ich bin mir also nicht sicher, ob Sie die Schriftart tatsächlich einstellen müssen oder nicht.

    0

    Ab November 2011 ist MinTTY jetzt Cygwin des Standard-Terminal-Emulator (installiert von setup.exe). MinTTY ist eine Abzweigung von PuTTYs Terminal-Emulator und unterstützt als solches die Unicode-Unterstützung und die verbesserte Kompatibilität mit anderen Terminal-Emulatoren.

    5

    Versuchen Sie folgendes:

    powershell.exe -NoExit /c "chcp.com 65001" 
    

    Wer nutzt msysgit:

    powershell.exe -NoExit /c "chcp.com 65001; sh --login -i" 
    

    Vergessen Sie nicht, Schriftart von Fenster zu Truetype-Schriftart mit UTF-8-Unterstützung ("Lucida Console") zu ändern

    +0

    Das funktioniert gut, so dass meine utf8 Zeichen korrekt angezeigt werden. Gibt es eine Möglichkeit, die Powershell zu machen?exe-Konfiguration persistent (chcp.com 65001), so dass es standardmäßig ausgewählt ist? – chmike

    +0

    cmd mit dem gleichen wie Sie konfigurieren, ist auch Arbeit Verwendung chcp 65001, dann wählen Schriftart Lucida Konsole – alljoyland

    +0

    Ich verwende msysgit in PowerShell mit folgender Konfiguration: https://gist.github.com/iegik/7485025 – iegik

    -1

    Auch von UTF-16 on cmd.exe

    Open/run cmd.exe 
        Click on the icon at the top-left corner 
        Select properties 
        Then "Font" bar 
        Select "Lucida Console" and OK. 
        Write Chcp 10000 at the prompt 
        Finally dir /b 
    
    +3

    10000 ist nicht eine Unicode-Codepage und ** ** ** kann Zeichen außerhalb von Mac Roman Charset anzeigen –

    0

    Öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten (führen Sie cmd als Administrator aus). Abfragen des Registrierungs verfügbaren Truetype-Schriftarten auf der Konsole nach:

    REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" 
    

    Sie erhalten eine Ausgabe wie sehen:

    0 REG_SZ Lucida Console 
    00 REG_SZ Consolas 
    936 REG_SZ *新宋体 
    932 REG_SZ *MS ゴシック 
    

    Jetzt brauchen wir eine Truetype-Schriftart hinzufügen, die die Zeichen unterstützt Sie wie Courier benötigen in diesem Fall neu, tun wir dies durch Nullen auf den String Namen addieren, so würde der nächste „000“ sein:

    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New" 
    

    wir UTF-8-Unterstützung Jetzt implementieren:

    REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f 
    

    Set Standardschriftart "Courier New":

    REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f 
    

    Set Schriftgröße 20:

    REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f 
    

    schnell bearbeiten aktivieren, wenn Sie mögen:

    REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f 
    
    -2

    A schnell und bequem geht es im Explorer.

     
        1. Open the Explorer window. 
        2. Traverse to the top level of directory where you want to find. 
        3. On the upper right corner, there is a find field.