VScode + Pythonだが。・・・・何かの例題で次のtext fileができた。(utf-8, nowtime.txt)
ファイルに書くテスト
2021-08-07 13:42:21.442500
2021-08-07 13:42:21.442500
2021-08-07 13:42:21.442500
VScodeは utf-8 で使っている。で、VScodeのTerminalは初期値がPowerShellである。
たまたま、Terminalで type nowtime.txt と叩いたら文字化けた。ひゅーどろどろどろ。それはオバケ・・・・ てへ。
こういう時、数年前に何度も経験したあれだぜ、あれ。chcp 65001, chcp 932 で切り替えるサー。text fileが utf-8 ならば chcp 65001 にするサー・・・・
だが、今回はだめだった。Powershellではtypeコマンドが抵抗するのか?
cmdにすると思惑通り、chcp 65001では正常、chcp 932では文字化ける。これは分かっている。
では、どうして、PowerShellではだめなのか・・・・うーーむ。
まー、別にVScodeのエディター画面で見れるのでTerminalに出さなくてもいいがなや・・・、待て待て そういう問題ではない。
Google検索黒帯10段(自称)のワタクシの検索力でGooglingして見ると、次のサイトに原因が載っていた次第である。感謝・感謝
https://www.fenet.jp/infla/column/engineer/powershell%E3%81%AE%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E8%A7%A3%E8%AA%AC%EF%BC%81%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%A7%E5%9B%B0%E3%82%89%E3%81%AA/
PowerShellはUTF-8を自動判別しないので、BOMがないとShift_JISと判断してしまうのです。BOM無しが主流になっているのでやっかいです。
そして、対策として、Get-Content test.txt -Encoding UTF8 のように文字コード指定するんだってサー。
そこでVScode Terminal のPowerShellで、
type nowtime.txt -Encoding UTF8
と叩いた所、文字化けせず!! オバケ退治!! 素晴らしい・・・・
しかーーーし、これでは不便であろう。PowerShellでスクリプト書く連中はutf8 BOMで保存しなければならないのである。まーいいか、ワイは使わないし(笑)
で、秀丸とか メモ帳とか見たら、保存時にBOMの選択肢がありましたね。BOMなんて意識した事ないですね。
あらら、では、常にBOM付きで保存すれば問題はなし? それはどうなんだろなあ。
待て待て、 PowerShell Coreというのインストールすると BOM無しで行けるらしいぞ・・・・・つーか、次から次と新たなものが出てきやがりましてワタクシはついていけませぬ・・・・・(´・ω・`)
そーだ、PowerShellなんか使わなければいいんだ!!
ところがだな、機械学習の本で本の内容を提供するのにDockerを利用している著者がいて、それPowerShellで操作するんだったサー・・・・ まー文字化けとは関係ないけど、日本語ないし(笑)
なので、まったくPowerShellを使わなくていいサー・・・ともならんのだ、本の内容をなぞるだけなんですけど。
つまり、こういう問題でアタフタするワタクシなのであり、本来のPowerShellの用途などという本質へ近づく事はないのでえぇぇあります(´・ω・`)
posted by toinohni at 09:51| 東京 ☔|
Comment(0)
|
ソフト系雑学
|
|