|
こちらのWindows10とWindows11の両方の環境で、その〜の文字の入ったファイ
ル名でファイルを1つ作って 「dir /b >list.txt」のようなテストをしたら、波ダ
ッシュの文字は「?」に置き換わるようでした。ちょっと説明いただいた結果と違う
んですが、どっちにても、それはいわゆるShift-JIS範囲外のユニコード文字が勝手
に変換されたってことだろうと思います。
あと、この問題はあくまでコマンドプロンプト上での話であって、秀丸エディタは直
接的には関係ないと思います。
対策ですが、いくつかあります。
■1.cmd.exeの出力をユニコード(UTF-16)にする方法
cmd.exe /c dir /b >list.txt
のようなコマンドラインを実行してるのだとしたら、それを
cmd.exe /u /c dir /b >list.txt
のように、cmd.exeに対して「/u」のオプションを付けると、list.txtがユニコード
のUTF-16エンコードで出力されます。それだと文字化けしないです。その場合、秀丸
エディタでそのlist.txtを開く時に「認識エラー」って警告が出てエンコード種類を
指定しないといけなくなるので、それを防ぐために、「動作環境 - ファイル - エン
コード1」の中の「ファイルの内容を解析してエンコードの種類を自動認識する」の
中の「Unicode(UTF-16)」をONにしておくといいです。
■2.chcpコマンドで切り替えてから実行する方法
コマンドプロンプトを起動してそこで「dir」コマンドを実行してる場合なら、それ
を実行する前に、
chcp 65001
ってコマンドを実行します。こうしてから「dir /b >list.txt」を実行すると、list.
txtはUTF-8のユニコードのエンコードで出力されます。それで文字化けが回避できま
す。この場合は、秀丸エディタでもUTF-8を自動認識するように、先ほどの「エン
コード1」の中のUTF-8をONにするのも必要になります。
■3.powershellを使う
コマンドプロンプトじゃなくてpowershellを使うと、powershellは標準でユニコード
動作になってるので、「/u」や「chcp」を使わなくても勝手にユニコードになります。
ただし「dir /b」はそのまま使えなくて、それは「dir -name」としないとダメらし
いです。
dir -name >list.txt
でテストしたら、list.txtはUTF-16で出力されました。
コマンドプロンプト上でのコマンド例をpowershellのコマンドに置き換える方法はネ
ット検索すると見つかりやすいです。上記例は「dir /b powershell」でGoogle検索
したら見つかりました。
■4.Windowsの設定でUTF-8にしてしまう方法
あくまでコマンドプロンプトでってことで、さらには余計なオプションやchcpコマン
ドも面倒ってことであれば、Windows標準でコマンドプロンプトその他をUTF-8にして
しまうことが可能です。やり方は、例えば
https://qiita.com/Ryokhu/items/37b79a48b625b77c7b39
に方法があります。ただし、これは「ベータ」と書いてある通り、問題が起きる可能
性があります。特に古いアプリで問題が出る可能性があります。うちのソフトだとパ
スワード総合管理なんかがうまく動かなくなります。なのであまりお勧めでは無いで
す。
こっち設定をしてから「dir /b >list.txt」を実行すると、list.txtはUTF-8になり
ます。
----------------------------------------------------------
将来的なことを考えるなら「3」の解決策がいいと思いますが、とりあえず的には
「1」か「2」でも策でもいいんじゃないかと思います。「4」はお勧めじゃないで
す。
|
|