chcp 10000
echo hell☺ w☻rld♥! >> "UTF-16 file☺☻♥♦♣♠"
正しいファイルが作成されましたが、コンテンツには Unicode 文字ではなく疑問符が含まれています。どうすれば修正できますか?
答え1
10000はUnicodeコードページではないため、コードが正しくありません。コード ページ識別子。
10000 macintosh MAC Roman; Western European (Mac)
...
1200 utf-16 Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
1201 unicodeFFFE Unicode UTF-16, big endian byte order; available only to managed applications
...
12000 utf-32 Unicode UTF-32, little endian byte order; available only to managed applications
12001 utf-32BE Unicode UTF-32, big endian byte order; available only to managed applications
...
65000 utf-7 Unicode (UTF-7)
65001 utf-8 Unicode (UTF-8)
理由はわかりませんが、コマンド プロンプトは、貼り付けたときにこれらを制御文字として解釈するようです。具体的には、SOH (見出しの開始、01)、STX (テキストの開始、02)、ETX (テキストの終了、03) です。
プラス面としては、PowerShell はこれを適切に処理しているようです。Notepad++ は結果のテキスト ファイルを「UCS-2 Little Endian」として自動的に開き、正しい文字を表示します。
わかりました。UTF-8 が機能しない理由が分かりました。デフォルトのラスター フォントには Unicode がサポートされていないため、フォントを Lucida Console に設定する必要があります。
答え2
と の両方65001.txt
に1200.txt
同じ文字列が含まれていますабв™
が、エンコードが異なります。コマンド:
chcp 65001 & type 65001.txt
コードページは正常に変更されましたが、ゴミが表示されます。
コマンド:
type 1200.txt
正しい文字が表示されますが、コマンド
for /f %A in ('type 1200.txt') do echo %A
が表示されますабвT
。
したがって、cmd.exe はコードページ 1200 (いくつかの制限あり) で動作できますが、コードページ 65001 では満足のいく結果が得られません。