これはやや質問に関連しています
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でもそれができます。
これは非常に古い質問ですが、ここで与えられた答えはすべて間違っています。
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を表示していません。
あなたはより多くの情報を見つけることができます このブログ投稿で 。
あなたのユーザー名に基づいて、私はあなたが主にアジアの言語で働いていると思います。
Windowsツールは通常ユニコードモードで動作します(dir
の出力をファイルにパイプし、そのファイルをエディターで開くことで見たように):
画面に任意の文字を表示するには、手順3のプログラムで、指定されたバイトシーケンスに適したグリフを検索する必要があります。例:
0x65'a 'は、各フォントの異なるグリフにマップされます(したがって、' a 'はフォントごとに異なって見えます)
0x937'Ω '(ギリシャ語' omega ')は、各フォントの異なるグリフにもマップされます
このマッピングは、フォントに特定のバイトシーケンスのグリフがある場合にのみ機能します。そうしないと、視覚的な結果が異なり、「?」が表示されることもあれば、ひし形などが表示されることもあります。
繰り返しますが、dir
はバイトシーケンスを生成します。バイトシーケンスは、純粋にASCII範囲にある場合もあれば、ユニコード範囲にある場合もあります(検出したファイル名によって異なります)。これらのシーケンスを、バイトシーケンスの実際のレンダリングを担当する別のプログラムに送信します。これらのシーケンスを表示できるようにするには、このプログラムはシーケンスをグリフにマップする必要があります。そのためには、フォントでグリフを検索する必要があります。フォントに特定のシーケンスのグリフがない場合、プログラムは、たとえばdir
によって生成されたバイトシーケンスを表示できません。
したがって、問題の解決策(Windowsの「コンソール/ターミナル」で任意のUnicode文字を確認する)は次のとおりです。(ほぼ)任意のUnicodeバイトシーケンスの(ほぼ)すべてのグリフを含むプログラムのフォントを使用します。
https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how
使用する chcp 65001
コードページをUTF8に変更し、Lucidaコンソールを使用します。
Windowsコンソールは常に内部でUnicodeを使用するため、エンコーディングとは何の関係もありません。文字は、プログラミングおよびヨーロッパ言語用に設計された使用するフォントでは使用できません。現在、Windowsにアクセスできませんが、Lucida Consoleフォントに切り替えた後、ギリシャ文字を印刷できたことを覚えています。 DejaVu SansMonoのようなフォントを使用すると機能する場合があります。
わかりました、これは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
はそうします。