スポンサーリンク

SJISファイルを読み込むと「警告: 無効なマルチバイト・・・」が表示

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

※MACターミナル(BSD系)での動作確認です。

例えば、下記のin.txtがあったとします。
(SJISです)

下記がサンプルコードになります。
参考:awkでsubstr()を使って文字列を切り出す方法

下記が実行結果になります。
うまく処理できていないですね。

スポンサーリンク

入力ファイルをUTF-8にする

入力ファイルをUTF-8に変換します。
参考:nkfで、UTF-8 改行コードLFに変更する(上書き)

nkfが便利ですね。
--overwriteで上書きです。

下記が実行結果になります。
うまく処理できたようです。

参考:SJISの表示でMACターミナルが文字化けした時の対策
・MACターミナルの表示にも影響が出ますね。
今の時代、UTF-8にしておくのが無難だと思います。

 

※読者の方からご指摘頂きました。ありがとうございました。
読者の方から、「警告が出るのは、ターミナルがUTF-8になっているから」とのご指摘を頂きました。
これはご指摘の通りです。ターミナルのエンコーディングをShift JISに変更すると、警告は消えます。

具体的な方法としては、下記の通りです。
「ターミナル」-> 「プロファイル」->「環境設定」-> 詳細 -> 言語環境のテキストエンコーディング
ここで、Shift JISを選択

ただ、MACターミナルのデフォルトはUTF-8ですし、UTF-8で扱っていく方が問題に遭遇する場面が減ると考えています。なので、今回は、UTF-8に変換して統一する方法を記載した次第です。

お問い合わせ頂きまして、ありがとうございました。
この場を借りてお礼申し上げます。

スポンサーリンク