オフィス菜のブログ

文字コードと改行について-Ubuntu編

始めに

例えば、他の OS より作成されたファイルを開く時、文字化けされ、更に、意図したような改行でなく、テキストエディターなどで開いた時、ビジュアル的に読めない資料もあると思います。
私自身、最近、Ubuntu (Ubuntu 20.04 LTS) を利用していて、昔々に作成した Microsoft Visual Studio で作成したコードを開く際、文字化けしていて物凄く面倒なことをしたことがありました。
nkf というコマンドを端末より利用すると、利用者好みの文字コード、改行コードに変換できました。
今回、この文字コードの変換などを行うツールと思われる nkf コマンドにつき、備忘録的に紹介します。
尚、この投稿に当たり、数多くのいろいろなブログなどを参考にさせて頂きました。

ちなみに、sudo apt install nkf にて、nkf をインストールさせました。

ブックオフオンライン【PC・スマホ共通】 ディノス オンラインショップ

使用例

端末を利用しました。
ユーザー名@パソコンの名前(ホスト名):/$ nkf -wLu –overwrite sample.csv

各々の意味合い

-wLu
出力の文字コード UTF-8で、改行が LF (Unix)
–overwrite
元ファイルを上書きする。ファイル名で与える必要があるらしい。
[-w]、[-W]でも、この –overwrite を付けないとファイルの内容が、Emacsみたいに端末に表示され、変換されなかった。
sample.csv
ファイルの名称
今回は、カンマ区切りのテキスト・ファイルを利用しました。

尚、cat でも、利用できるようです。
cat sample.csv | nkf –guess

オプション

オプションについて、概略説明します。(ほとんど、いろいろな方々が投稿しておられたブログや 日経Linux よりの拾い読みです。)
尚、オプションの大文字、小文字も意味合いがあるみたいです。

文字コードの指定

大文字入力の文字コード、小文字出力の文字コード

-J, -j
ISO-2022-JP
-S, -s
Shift-JIS
-E, -e
EUC-JP
-W, -w
UTF-8 « 私の場合、このオプションが主だと思います。

改行コード

L は、半角の大文字です。

-Lu
改行コード LF (Unix) でよくある形式に変換 « 私の場合、このオプションが主だと思います。
-Lw
改行コード CR+LF (Windows) でよくある形式に変換
-Lm
改行コード CR (Mac) でかつてよくあった形式に変換

その他として

-x
半角カナを半角のままにする。このオプションを付けないと全角に変換されるらしい。
–guess
変換でなく、文字コードを調べるオプションと思います。
-g でも良さそうですが、意図したような動作はしませんでした。
–guess の利用が無難です。
–overwrite
変換した結果を標準出力するのではなく、元ファイルを上書きする。 入力は標準入力からではなく、ファイル名で与える必要がある。

端末の表示

list3-01.txt という、ファイルの既存の文字コード、改行コードをチェック (–guess) して、文字コードを UTF-8 に出力 (-w)、改行コードを Unix でみられる LF (-Lu) に変換した時の端末の表示を紹介します。

ユーザー名@パソコンの名前(ホスト名):/$ nkf --guess list3-01.txt « 変更前の文字、改行コードの確認
Shift_JIS (CRLF) 

文字コード Shift_JIS
改行コード CR+LF (Windowsでみられる改行コード)

ユーザー名@パソコンの名前(ホスト名):/$ nkf -wLu --overwrite list3-01.txt « 文字コードを UTF-8 に、改行コードを LF に変える。
ユーザー名@パソコンの名前(ホスト名):/$ nkf --guess list3-01.txt « 変更後の文字、改行コードの確認
UTF-8 (LF)

文字コード UTF-8
改行コード LF (Unixでみられる改行コード)

この投稿の改定履歴

このページには、各種広告も掲示しています。
掲示した広告、及び、スタイルの変更については、履歴を記載しません。

2021年03月15日
新規投稿
−以 上−

,

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください