web-dev-qa-db-ja.com

Windows 7でも、「dir」を実行して、Unicode文字を含むファイル名を表示できますか?

これはやや質問に関連しています

Windows 7では、cmd/Uでcmdを開始しても、dirまたはtreeはUnicode文字を表示できません

Windows 7でも、Unicodeをファイルに入れる唯一の方法は

> cmd /U
> dir /B > files.txt

メモ帳で開いて「名前を付けて保存」を試みると、ファイルは「Unicode」になります。dir /B > files.htmlしてFirefoxでHTMLファイルを開くと、UTF-16(またはUTF-16)のエンコーディングを使用して表示できます。 LE)。

しかし、ファイルに移動するのではなく、画面に表示したい場合でも、それは不可能です。それを実現する方法はありますか?おそらくどういうわけか、印刷できない文字を「?」として表示しないようにcmdに指示しています。

更新:cmd.exe、Windowsでのcygwinのbash、およびPowerShellを試しました。それらは同じです。 [プロパティ]-> [フォント]をConsolasまたはLucidaConsoleに変更した場合を除いて、いくつかの改善があります。これは疑問符ではなく、正方形の境界線または疑問符の付いた正方形です。

Mac OSXを搭載したより高価なMacコンピュータでそれが可能です。無料のUbuntuでもそれができます。

5
nonopolarity

これは非常に古い質問ですが、ここで与えられた答えはすべて間違っています。

Windowsコマンドライン(CMD.exe)にUnicode出力が表示されることはありません。その理由は、CMDはUnicodeを表示できないためです。ただし、[〜#〜] dbcs [〜 #〜](2バイト文字セット)。

たとえば、日本語の出力を表示する場合は、システムロケールを日本語に変更して再起動する必要があります。次に、コマンドラインで日本語のDBCS(Shift-JIS)文字を表示できるようになります。 Windowsは、日本語のShift-JIS、簡体字中国語、韓国語、および繁体字中国語の「Big5」DBCSコードページをサポートしています。

ちなみに、UTF-16(Microsoftの「Unicode」と同じ意味で不正確に使用されている)をファイルにパイプしてから、そのファイルをメモ帳などで開いて、Unicode文字を表示することができます。 CMD.exeから意味不明なテキストをマークしてコピーし、メモ帳に貼り付けてUnicode文字を表示することもできます。つまり、CMDはUnicodeをサポートしていますが、Unicodeを表示していません。

あなたはより多くの情報を見つけることができます このブログ投稿で

5
Jeff

あなたのユーザー名に基づいて、私はあなたが主にアジアの言語で働いていると思います。

Windowsツールは通常ユニコードモードで動作します(dirの出力をファイルにパイプし、そのファイルをエディターで開くことで見たように):

  1. ツールはその役割を果たします
  2. unicode文字を出力します
  3. 別のプログラムがこの出力を受け取り、それを表示する必要があります。

画面に任意の文字を表示するには、手順3のプログラムで、指定されたバイトシーケンスに適したグリフを検索する必要があります。例:

  • 0x65'a 'は、各フォントの異なるグリフにマップされます(したがって、' a 'はフォントごとに異なって見えます)

  • 0x937'Ω '(ギリシャ語' omega ')は、各フォントの異なるグリフにもマップされます

このマッピングは、フォントに特定のバイトシーケンスのグリフがある場合にのみ機能します。そうしないと、視覚的な結果が異なり、「?」が表示されることもあれば、ひし形などが表示されることもあります。

繰り返しますが、dirはバイトシーケンスを生成します。バイトシーケンスは、純粋にASCII範囲にある場合もあれば、ユニコード範囲にある場合もあります(検出したファイル名によって異なります)。これらのシーケンスを、バイトシーケンスの実際のレンダリングを担当する別のプログラムに送信します。これらのシーケンスを表示できるようにするには、このプログラムはシーケンスをグリフにマップする必要があります。そのためには、フォントでグリフを検索する必要があります。フォントに特定のシーケンスのグリフがない場合、プログラムは、たとえばdirによって生成されたバイトシーケンスを表示できません。

したがって、問題の解決策(Windowsの「コンソール/ターミナル」で任意のUnicode文字を確認する)は次のとおりです。(ほぼ)任意のUnicodeバイトシーケンスの(ほぼ)すべてのグリフを含むプログラムのフォントを使用します。

1
akira

https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how

使用する chcp 65001コードページをUTF8に変更し、Lucidaコンソールを使用します。

0
ta.speot.is

Windowsコンソールは常に内部でUnicodeを使用するため、エンコーディングとは何の関係もありません。文字は、プログラミングおよびヨーロッパ言語用に設計された使用するフォントでは使用できません。現在、Windowsにアクセスできませんが、Lucida Consoleフォントに切り替えた後、ギリシャ文字を印刷できたことを覚えています。 DejaVu SansMonoのようなフォントを使用すると機能する場合があります。

0
Philipp

わかりました、これはPowerShellを使用したソリューションです:

1)Windows7のStartボタンをクリックします
2)ここで、空白行にPowerShellと入力します
3)PowerShell ISEを選択 <-ISEであることに注意してください

これで、lsを実行すると、Unicode文字を表示できるようになります...

4)chcp 65001も使用している場合、プログラムがUTF-8文字を出力すると、それらも適切に表示されます。

ls > list.txt、次にtype list.txtを実行することもでき、コンテンツはUnicode文字で表示されます。

treeはまだUnicode文字を表示しません。

また、PowerShell ISE内では、cmd /U /C dir /Bも機能しません。

ls -Rはそうします。

0
nonopolarity