web-dev-qa-db-ja.com

PowershellでのUnicodeの表示

私が達成しようとしていることは、Powershellがほとんど不可能にしていますが、かなり簡単です。

アラビア語、中国語、日本語、ロシア語の文字を含むファイルの完全なパスを表示したい

以下に示すような解読不能な出力が常に表示されます enter image description here

コンソールに表示される出力は、別のスクリプトによってそのまま使用されています。出力には、実際の文字の代わりにが含まれます。

実行されるコマンドは

(Get-ChildItem -Recurse -Path "D:\test" -Include *unicode* | Get-ChildItem -Recurse).FullName

出力が正しく表示されるように、Powershellを簡単に起動する方法はありますか(コマンドライン経由またはスクリプトに記述できる任意の方法で)。

追伸スタックオーバーフローに関する多くの同様の質問を経験しましたが、Windowsコンソールサブシステムの問題と呼ぶ以外に、それらのどれにも多くの入力がありません。

22

詳細 Alexander Martinの答え 。テストの目的で、次のように異なるUnicodeサブ範囲から 有効な名前 のフォルダーとファイルをいくつか作成しました。

valid names

たとえば、Courier Newコンソールフォントでは、PowerShellコンソールでCJK文字の代わりに置換記号が表示されます。

Courier New

一方、 SimSun コンソールフォントでは、CJK文字が表示されているように見えますが、アラビア語とヘブライ語の文字の代わりに(表示されにくい)置換記号が表示されます正しい:

SimSun

すべての置換シンボルは単に表示されるだけであることに注意してください。実際の文字は次のように保存されますCopy&Paste上記のPowerShellコンソールから:

PS D:\PShell> (Get-ChildItem 'D:\bat\UnASCII Names\' -Dir).Name
Arabic (عَرَبِيّ‎)
CJK (中文(繁體))
Czech (Čeština)
Greek (Γρεεκ)
Hebrew (עִבְרִית)
Japanese (日本語)
MathBoldScript (????????????????????????????????????????????????????????)
Russian (русский язык)
Türkçe (Türkiye)
‹angles›
☺☻♥♦

完全を期すために、以下に適切なレジストリ値を示します Windowsコマンドプロンプトでより多くのフォントを有効にする (これはWindows PowerShellコンソールでも機能します):

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont' |
    Select-Object -Property [0-9]* | Out-String).Split( 
        [System.Environment]::NewLine, 
        [System.StringSplitOptions]::RemoveEmptyEntries) | 
     Sort-Object

サンプル出力:

0       : Consolas
00      : Source Code Pro
000     : DejaVu Sans Mono
0000    : Courier New
00000   : Simplified Arabic Fixed
000000  : Unifont
0000000 : Lucida Console
932     : *MS ゴシック
936     : *新宋体
4
JosefZ

これを2回投稿する際、Powershell ISEは外国文字を表示するためのオプションです。これはutf8エンコードファイルです。

PS C:\Users\js> get-content korean.txt

The Korean language (South Korean: 한국어/韓國語 Hangugeo; North 
Korean: 조선말/朝鮮말 Chosŏnmal) is an East Asian language
spoken by about 77 million people.[3]
0
js2010

問題のあるすべての文字がインストールされ、Win32コンソールフォントとして設定されているフォントがあることを確認してください。覚えている場合は、ウィンドウの左上隅にあるPowerShellアイコンをクリックして、[プロパティ]を選択します。結果のポップアップダイアログには、使用するフォントを設定するオプションが必要です。ビットマップ(.FONまたは.FNT)フォントである必要があります。

0