• ベストアンサー

Linux nkfコマンド使用方法

最近、nkfコマンドを知りました。 nkf -w8 --overwrite test.php nkf -g test.php >>UTF-8 上記は、意図したとおりに変換されますが、 -jesなどの他の文字コード変換ができません。 なぜでしょうか。 バージョン2.1.2 ご回答をよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#223623
noname#223623
回答No.2

> -jesなどの他の文字コード変換ができません。 > なぜでしょうか。 理由はわからないけど、試しに  $ nkf -g test.php  # 結果1  $ nkf -j test.php > test.php.j  $ nkf -g test.php.j  # 結果2 を実行して、結果1 と 結果2 がどうなったか補足してみたらどうかな。-e, -s も同様に。

toyoucook
質問者

お礼

マルチバイト文字(日本語)を含んでいないファイルをSJIS、EUCに変換しようとしていました。変換できないではなくて、強制的にASCII になっていた模様です。 日本語を含んだ状態で、変換したところうまくいきました。^^;当たり前ですね お二方ともありがとうございました。

toyoucook
質問者

補足

回答ありがとうございます。 色々やってみることにします。

その他の回答 (2)

noname#223623
noname#223623
回答No.3

#2 です。補足をもらう前だけど勘で追加投稿。  $ nkf -g test.php  # 結果1  $ nkf -j test.php > test.php.j  $ nkf -g test.php.j  # 結果2 とやった場合、結果1は ASCII になるんじゃないかな。だとすると日本語が含まれてないので nkf -j(e,s) を実行した後(結果2)もやはり ASCII になる。 では、なぜ -w8 のときに結果2 が UTF-8 になるかというと、元の内容に BOM が付加されてるから。元の内容に日本語が含まれてなくても、BOM があるので UTF-8 と判定されてるってことですね。 ちなみに -w80 だと BOM が付かないので、結果2 はやはり ASCII になりますね。  $ cat aaa  abcde  $ nkf -g aaa  ASCII  $ nkf -w8 aaa > aaa.w8  $ nkf -g aaa.w8  UTF-8  $ nkf -w80 aaa > aaa.w80  $ nkf -g aaa.w80  ASCII (ここまで書いて質問を確認したら補足きてました。が、そのまま送ります)

toyoucook
質問者

お礼

ご回答ありがとうございました!

  • localica
  • ベストアンサー率52% (202/385)
回答No.1

jesって何ですか? >なぜでしょうか。 マニュアルを確認されましたか? jisに変換したいならオプションは「j」、sjisに変換したいなら「s」です。 変換出来ない文字コードも存在します。 http://sourceforge.jp/projects/nkf/howto/usage

toyoucook
質問者

お礼

初歩的な間違いでした。 ありがとうございました。

toyoucook
質問者

補足

回答ありがとうございます 分かりづらくて申し訳ありません オプションのことでした。 -j -e -s utf-8には変換できるのですが、それ以外の変換が行えません。

関連するQ&A