web-dev-qa-db-ja.com

Unicode文字を表示するWindowsコマンドシェルはありますか?

適切なグリフを含むフォントがインストールされていると仮定すると、Unicode文字を表示するコマンドWindows用シェルXP?少なくとも、Unicodeを正しく表示する2つのことがあります。

  • ディレクトリリスト。名前にUnicode文字が含まれるファイルが、印刷できない文字ボックスではなく、正しいグリフで表示される限り、入力する内容(dir、ls、get-childitemなど)は気にしません。
  • テキストファイルのコンテンツリスト。繰り返しますが、文字が印刷されている限り、それが「少ない」、「もっと」、「猫」、「犬」などであれば、私には関係ありません。これは、ファイルの文字エンコードのためにより複雑であると認識しているため、コマンドラインでそれを指定する必要がある場合は問題ありません。

これまでに試したことは次のとおりです。

  • cmd.exe
  • Windows PowerShell;多言語バージョンを含む。
  • Cygwin bash

運がありません。私も cmd/PowerShellのカスタムフォント をインストールしようとしました。 PowerShellとcmd.exeはUnicodeを認識しているようです。つまり、印刷できないボックスをコピーして貼り付けて、正しい文字で他のアプリに貼り付けることができます。 Cygwin(?)は?に変換されるようですキャラクターとそれはコピー/ペーストで伝わります。

何か案は?

49
Brandon DuRette

これはPowerShell v1の大きな問題でした。バージョン2には、問題を修正する「グラフィカルシェル」が付属しています。これは、最終的にPowerShellではなく、Windowsコンソールホスト(Cmd.exeも使用)にあります。必要に応じて、PowerShell v2の現在のCTPを取得できます。

実際、PowerShell v2.0は8月上旬にWindows 7およびWindows Server 2008 R2のリリースとともに完成し、出荷されました。さらに、バックポート版(Windows Vista/2008)は、先日リリース候補マイルストーンに到達しました。 Windows XP/Windows Server 2003はすぐに続くはずです。 Linky linky

18
Don Jones

cmd.exeでこれを行うには、コンソールプロパティダイアログを使用してUnicode TrueTypeフォントに切り替える必要があります。

次に、これらのコマンドを使用します。

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT

コマンド:

  • コンソールをUTF-8に切り替える(65001)
  • DIRの出力をUTF8.TXTにリダイレクトします
  • UTF-8をコンソールにダンプします

コンソールで適切に表示するには、フォントで文字をサポートする必要があります。

I18N:WindowsコマンドプロンプトでのUnicode(C++; .Net; Java)

40
McDowell

コマンド "chcp 65001"を使用してコードページをUTF-8に設定すると、ファイルの内容をシェルに正しく印刷するのに役立ちます(cmd.exeを使用)。ただし、ディレクトリリストでは機能しません(NTFSファイル名のUTF-16エンコード)。

6
Kim André Sand

これを試して:

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

Msysgitの使用者:

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

UTF-8をサポートするウィンドウのフォントをTrueTypeフォントに変更することを忘れないでください( "Lucida Console")

5
iegik

真のシェルについては、PowerShell Plusを試してください。エディターだけでなく、真のコンソールでも、Unicodeフォントを選択して他の言語で作業できます。

2
karl prosser

これが、Windows 7 Pro英語版で実行されるcmd.exeで中国語の出力を取得する方法です。また、日本語、ロシア語、ポーランド語でファイル名を試してみましたが、すべて正しく表示されるようです。少なくとも、ASCII以外の文字を含むdir xxx*を実行しようとしたときに、入力も機能しているようです。

  1. console2 をインストールします。これはcmd.exe(およびその他のシェル)のフロントエンドです

  2. インストール後、 これらの手順 に従ってください

    レジストリ内のキーHKEY_CURRENT_USER\Console\Console2 command windowを削除します。

    次のデータをWindowsレジストリにインポートします。

    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. フォントを変更する必要がある場合としない場合があります。最初はフォントを@NimSumに設定し、漢字は90度回転して出てきました。それからNimSum(@なし)に切り替えて、正しく表示されました。好奇心からConsolaに切り替えましたが、それでも中国語の文字を見ることができます。したがって、実際にフォントを設定する必要があるかどうかはわかりません。

2
crusherjoe

コンソール2 を試してください。ただし、色/パレットの構成には注意してください。これらは少しバグが多いです。動作しないことを確認しました。それらはcmd.exeのように動作します。

1
Kim André Sand

PowerShell V2 CTP 内部 Console2 はそうするようです。唯一の欠点は、デフォルトのコンソールエンコーディングがUTF-8ではなくUCS-2 LEであることです。

0
Robin Smidsrød

2011年11月 の時点で、MinTTYはCygwinのデフォルトのターミナルエミュレータになりました(setup.exe)。 MinTTYはPuTTYのターミナルエミュレーターのフォークであり、そのため、適切なUnicodeサポートと他のターミナルエミュレーターとの互換性が大幅に向上しています。

0
nneonneo

管理者特権でコマンドプロンプトを開きます(cmdを管理者として実行します)。次の方法で、使用可能なTrueTypeフォントをコンソールでレジストリに照会します。

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

次のような出力が表示されます。

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

次に、Courier Newなどの必要な文字をサポートするTrueTypeフォントを追加する必要があります。文字列名にゼロを追加することにより、この場合、次の文字列は "000"になります。

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

次に、UTF-8サポートを実装します。

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

デフォルトのフォントを「Courier New」に設定します。

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

フォントサイズを20に設定します。

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

必要に応じてクイック編集を有効にします:

REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f
0
Alon Or