在 Windows 10 機器上,我透過命令列執行以下命令:
C:\Users\idiot\Music>dir /a:d /s /b >> tom-music-2016-july.txt
目的是列出所有目錄。但我注意到名稱中包含非羅馬字母的目錄將打印 ??????而不是俄語或中文字符。為什麼?
最初我認為問題出在系統字體。 (我沒有安裝俄語語言套件)。但我可以在 Win 資源管理器中將檔案重新命名為俄語檔案名稱。重要的是,當我在視窗中運行 DIR 命令(不將其通過管道傳輸到輸出檔案)時,我可以清楚地看到俄語字符。
對我來說,這意味著問題要么出在將某些內容傳輸到文件的命令上,要么出在試圖讀取輸出的 Windows 文字編輯器上。
我嘗試在 2 個單獨的文字編輯器甚至網頁瀏覽器中開啟該文件,但無論如何我都看到問號字元。
有人可以提出這個問題的原因和可能的解決方案嗎?
我是否正確地假設我不需要對文件或目錄本身進行任何處理?謝謝。
後記:我特別困惑為什麼俄語字元在控制台視窗中渲染得很好,但當它通過管道傳輸到文件時,我看到問號。
答案1
>
沒什麼秘密:使用重定向建立的檔案的編碼遵循cmd
.?
如果字元不存在於這樣的代碼頁中,則(問號)只是替換(替換標記)。
解決方案:使用UTF-8
(代碼頁65001)作為chcp 65001
以下範例說明了(也許證明)很好:
d:\bat\UnASCII Names> chcp 1250
Active code page: 1250
d:\bat\UnASCII Names> dir /b /AD >dir1250.txt
d:\bat\UnASCII Names> chcp 65001
Active code page: 65001
d:\bat\UnASCII Names> dir /b /AD >dir65001.txt
在Notepad++中開啟的dir1250.txt
和檔案:dir65001.txt
請注意所謂的ANSI
我的語言環境中的代碼頁是 1250(中歐),而您的語言環境可能是 1252(美國和西歐)...