人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

nkfでの文字コード変換についての質問です。
ある一覧の文字コード変換にnkfを使用しているのですが、特定の行のみで変換がうまくいきません。
さらに言えば、nkfで全体を一発で変換した場合のみ当該行の変換がうまくいかず。単発で当該行のみをnkfで変換すれば問題なく変換が出来てしまいます。
正直原因を掴みかねており、勘所ある方いらっしゃいましたら、アドバイス宜しくお願いいたします。

●質問者: lg-tsp
●カテゴリ:コンピュータ
✍キーワード:nkf アドバイス 文字コード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● くまっぷす
●25ポイント

http://www.linuxworld.jp/command/-/10370.html

LinuxWorld Online - 第22回 文字コードと改行コードを変換する

当てずっぽうで申し訳ありません。

引っかかっているデータがないし、何から何への変換で失敗しているかわからないので何とも言えませんが、当該行の前の行末の改行コードが悪さをしているのではないでしょうか?

例えば試しに改行コードだけ先に変換してみるとか?

http://homepage2.nifty.com/cs/linux_command/command/od.html

$BF|7P(JLinux(B (J[Linux$B%3%^%s%I=8(J](B (Jod(B (J:(B $B%P%$%J%j!&%U%!%$%k$NFbMF$r1\Mw$9$k(J

またはその行末に何かゴミ(表示されないデータ)がついている可能性も否定できないので当該行近辺の中身を見てみたほうがいいかもしれません。

◎質問者からの返答

改行コードかゴミが怪しいということですか。。。

ちょっと継続して調べてみます。


2 ● mtag
●25ポイント

http://jp.analog.cx/ml/archive/200204.month/1132.html

Article 1132 at 02/04/05 16:57:21 From: turutani@scphys.kyoto-u.ac.jp Subject: [analog-jp:01132] Re: URL-decode $B$9$kJ}K!(B

うまくいかない部分は文字コードがほかの行と違うのではないでしょうか?


nkfは何もオプションを与えないと、元の文字コードを自動判別します。この自動判別は、入力中に複数の文字コードが混在している場合でも、それぞれを自動的に判断して適切な変換を行おうとします。ただ、文字コードの異なる部分が短い場合など、自動での判別が難しいものがあります。そうなると、その部分の判定に失敗し、結果として文字化けとなります。

http://www.linux24.com/linux/allascii/linuxmag/2001/06/18/626705...

コマンドによっては数多くのオプションを持つ。このリファレンスを参考にしよう。

nkfに-Eや-S、-Jなどのオプションをつけると、入力をそれぞれEUC, S-JIS, JISに決め打ちして変換します。-Eをつけてうまく変換できれば、EUC, というようにもとの文字コードを推定できます。


どれかのオプションで正しく変換できれば、元の文字コードは統一されているが、nkfの自動判別がそれを誤解していることになります。この場合は自動判別を行わないようnkfに正しく変換できるオプションをつけて実行すればよいです。


どれをつけてもうまくいかない部分がある場合、文字コードが混在しています。

入力の文字コードを統一してもらうか、

文字コードが異なる場所を特定し、個別にnkfをかける

などの対応が必要になります。

http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/

UTF-8 $BBP1~(B nkf (nkf_utf8)

前述のどのオプションでもだめな場合はunicodeの可能性もあります。

◎質問者からの返答

当該行のみ文字コードが異なる可能性ですか・・・。確かにあり得なくない話です。

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ