私が達成しようとしていることは、Powershellがほとんど不可能にしていますが、かなり簡単です。
アラビア語、中国語、日本語、ロシア語の文字を含むファイルの完全なパスを表示したい
コンソールに表示される出力は、別のスクリプトによってそのまま使用されています。出力には、実際の文字の代わりに?が含まれます。
実行されるコマンドは
(Get-ChildItem -Recurse -Path "D:\test" -Include *unicode* | Get-ChildItem -Recurse).FullName
出力が正しく表示されるように、Powershellを簡単に起動する方法はありますか(コマンドライン経由またはスクリプトに記述できる任意の方法で)。
追伸スタックオーバーフローに関する多くの同様の質問を経験しましたが、Windowsコンソールサブシステムの問題と呼ぶ以外に、それらのどれにも多くの入力がありません。
詳細 Alexander Martinの答え 。テストの目的で、次のように異なるUnicodeサブ範囲から 有効な名前 のフォルダーとファイルをいくつか作成しました。
たとえば、Courier Newコンソールフォントでは、PowerShellコンソールでCJK文字の代わりに置換記号が表示されます。
一方、 SimSun コンソールフォントでは、CJK文字が表示されているように見えますが、アラビア語とヘブライ語の文字の代わりに(表示されにくい)置換記号が表示されます正しい:
すべての置換シンボルは単に表示されるだけであることに注意してください。実際の文字は次のように保存されます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 : *新宋体
これを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]
問題のあるすべての文字がインストールされ、Win32コンソールフォントとして設定されているフォントがあることを確認してください。覚えている場合は、ウィンドウの左上隅にあるPowerShellアイコンをクリックして、[プロパティ]を選択します。結果のポップアップダイアログには、使用するフォントを設定するオプションが必要です。ビットマップ(.FON
または.FNT
)フォントである必要があります。