トップページ > プログラム > 2014年05月21日 > sYItXBaD

書き込み順位&時間帯一覧

47 位/171 ID中時間01234567891011121314151617181920212223Total
書き込み数0100000000000000000000001



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【最強CUI】PowerShell -Part 1

書き込みレス一覧

【最強CUI】PowerShell -Part 1
203 :デフォルトの名無しさん[]:2014/05/21(水) 01:04:44.83 ID:sYItXBaD
utf8を出力するコマンドを扱うのは厄介で
普通に実行すると、utf8がsjisに文字化けした文字列が出力され、
これを > しようもんならさらにutf-16leでエンコードされて涙目になる。
> そもそも自分でエンコーディング指定しない状態でうまくいくと思うのがおかしくね
なんていう話ではない>>191>>192

これ(utf8がsjisに文字化けした出力)をファイルに落として(sjisでエンコード指定(Default))
Get-Contentで読み込む(utf-8でエンコード指定)と
文字コードはあってるのにバイトが欠けたような化け方をして元のコードには戻らない。
cmd.exeのutf-8→sjisの変換(iconvとかnkf)ではそんなバイト欠けしないので
暗黙の多重エンコードのせいでバグのような挙動になってるのだろう。

get-content でutf8なファイルを-Encoding utf8指定して読み込むとすべてうまくいくので
コマンドにもutf8でエンコードで指定できればうまくいきそうではある。
でもコマンドにはエンコード指定ができないのだ。
これはcmd.exeと一緒なので普通なんだけど。

cmd.exeでutf8を扱うのはXPからの悲願だったわけで
sjisに化けた文字をどうこうするよりやはり生のutf-8を出力してもらうのが最善であろう

Diagnostics.ProcessStartInfoのStandardOutputEncodingを設定すれば
ナマのutf-8を吐いてくれる。
つまり、Diagnostics.ProcessStartInfo の設定してとあるutf-8出力コマンドに
引数を渡すラッパをpowershellスクリプトで書けばいい

手間といえば手間だが
cmd.exeでutf8を扱うのはXPからの悲願だったわけで
必要な手間だといえる


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。