nkfってなんだ (337レス)
1-

159: 2006/01/13(金)15:10 AAS
--guess はバグってる?

% nkf --version
Network Kanji Filter Version 2.0.5 (2005-04-10)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW, 2002-2005 Kono, Furukawa, Naruse
% nkf --guess utf8
UTF-8
% nkf --guess utf8 utf8 utf8
省3
160
(1): naruse 2006/01/16(月)19:58 AAS
ごめんなさい、バグってます。
CVSでは nkf.c rev:1.71 治っておりますので、よろしければそちらをお使いください。
外部リンク[c]:cvs.sourceforge.jp
なお、2.0.6は桜が咲くころには出す予定です。
161: 2006/01/16(月)20:40 AAS
>>160
ああ!思い出した。 ruby-dev に出てたのと同じ問題ですね。
桜が咲くのを待ちつつ、修正版を使いますです。どうもです。
162: 成瀬 ◆NBGqNARUSE 2006/03/11(土)14:09 AAS
えー、というわけで、そろそろ桜の花も咲きそうなので、
2.0.6を出したいなぁと思っているわけですが、迷っているのが一つ。

「nkf --overwrite が mtime を更新しない」
外部リンク[html]:lists.sourceforge.jp
って直した方がいいですか?
数行の修正でいいはずなのですが、どちらがお好みなのかなーと。

ついでに、nkf 2.0.6での文字コードのマッピングは以下の通りになりますので、ご意見のある方はお早めに。
省1
163: 2006/03/11(土)16:45 AAS
modify したんだから更新しといた方がいいんじゃない?
わりとどうでもいいけど。
164
(1): 2006/03/11(土)16:48 AAS
過疎スレに書き込むなボケ
165: 2006/03/11(土)18:41 AAS
迷ったときはオプションを追加して泥沼化
166
(1): 成瀬 ◆NBGqNARUSE 2006/03/11(土)19:04 AAS
デフォルトでmtimeを更新するようにしたら、
cp -p を真似して、mtimeを更新しない -p オプションを追加する気ではいます。

>>164
わざわざageてくださってどうも、しかもツンデレで。
167
(3): 2006/03/12(日)20:21 AAS
>>166
--overwrite が長いオプションなので、 (tar 風に) --preserve とかがいいかなあ。
一文字オプション文字空間はそれほど広くないでしょう。
168: 成瀬 ◆NBGqNARUSE 2006/03/12(日)23:32 AAS
外部リンク[html]:lists.sourceforge.jp

によると、--overwrite がatime/mtimeを保持するのは意図した動作らしいので、手をつけないことにしました。

というわけで、
* touchすれば更新できるのでそのままにしておく
* 更新するoverwriteを別途定義する
* tar風に --modification-time と --access-time を追加
かなぁ・・・。
省1
169
(1): 2006/03/12(日)23:42 AAS
qkcの-jがくさってるってのは、具体的にどんな場合?
170: 成瀬 ◆NBGqNARUSE 2006/03/13(月)00:08 AAS
>>169
おそらく、デフォルトでエスケープシーケンスが ESC $B と ESC (J になっていることではないかと。
/Jでなく、/BJを指定すればいいのですけれどね。

外部リンク[html]:hp.vector.co.jp
外部リンク[html]:hp.vector.co.jp
171: 167 2006/03/13(月)00:35 AAS
意図してやってるなら仕方ないですね。
とりあえずそのままで、タイムスタンプ変えたい人が多く出てきたらオプション新設、
とかでもいいように思います。

そういえば先日 Subversion でファイルを nkf --overwrite してからコミットしようとしたら
一向にコミットできなくてはまってしまった。
--overwrite のタイムスタンプの件は man に書いてなかったですよね?
172: 成瀬 ◆NBGqNARUSE 2006/03/13(月)00:54 AAS
タイムスタンプの件はマニュアルには書いてありませんね。
とりあえずマニュアルは更新しておくことにします。
173: 167 2006/03/13(月)00:55 AAS
すんません、お手数かけます。
174: 167 2006/03/13(月)10:10 AAS
思い出した。

今更なので、変えてくれという話ではなくて、素朴な疑問なのですが、
「--overwrite」って一般的なもんなんすかね?
GNU sed だと --in-place だったり Perl や Ruby だと -i ですよね。
175: 成瀬 ◆NBGqNARUSE 2006/03/13(月)15:01 AAS
別名の案を考えるのにフィルタ系のコマンドを一通り調べてみたのですが、
* 相当するコマンドが無い
* デフォルトが上書き
がそもそも大多数で、わたしが見つけられたのはPerl/Rubyの-i[=extension]くらいでした。
sedは見たのですが、GNU sedには-i/--in-placeがあるのですか。
--overwriteを用いているのはnkfくらいのようですね。

-iは既存のオプションと衝突しているため使えないとして、
省5
176: 成瀬 ◆NBGqNARUSE 2006/03/21(火)22:55 AAS
2.0.6 beta1 を出しました。
外部リンク:sourceforge.jp

ところで、今 nkf は -m がデフォルトで有効になっています。
これを、デフォルトで -m0 にしたいと思っているのですが、どう思います?
一応、コンパイルオプションでデフォルト -m / -m0 を切り替えられるようにして、
お茶を濁しつつ変えてしまおうかとも思っているのですけれど。

ちなみに、同様に意図しない変換を引き起こしうる、デフォルトが -X な件は、
省1
177
(4): 2006/06/03(土)16:36 AAS
SJISで全角'−'記号の0x817CをUTF-8Nの0xEFBC8Dに変換する
オプションを教えて欲しい。
普通にC:\>nkf -S -w test.sjs > test.utf8nとかしても
0xE28892に変換され、他のソフトに読み込むときうまく
読み込まれず苦労しています。
TeraPadで読み込んでUTF-8Nで変換すると0xEFBC8Dに変換されます。
あと、全角の'¥'記号が半角の'\'記号になってしまうのも。
178: 2006/06/04(日)01:42 AAS
人に聞くよりソース読んじゃった方が早くね?
179
(1): 2006/06/04(日)10:55 AAS
>>177
nkfのversionは?

iconv使った方がいいかもね。
180
(1): 177 2006/06/04(日)17:35 AAS
nkfのVersionはたしか2.07betaだと思う。
Vectorでダウンロードしたやつで、
色んなVersionが同梱されていました。
因みにiconvってWindowsで使えるの?
181: 2006/06/04(日)20:39 AAS
それだとあなたの言う動作になっているね。
2.0の頃は¥のままだったんだけど。

iconvはcygwinに入っているよ。
182
(1): 2006/06/04(日)22:30 AAS
--cp932
183
(1): 177 2006/06/05(月)08:47 AAS
>>182
nkf -S -w --cp932 infile.sjis > outfile.utf
で望の結果となりました。アリガトウゴザイマス。
184
(1): 2006/06/05(月)09:15 AAS
>>137
今更ながらだが、kccのコードを弄って簡易spamフィルタに使ってるぞ。
Subjectに、8ビット文字入れてくる汚物メールを検出するフィルタ。

nkfだとコードがでかすぎて弄れぬ。
185: 成瀬 ◆NBGqNARUSE 2006/06/16(金)03:28 AAS
今更だけどフォロー
>>177 >>183
現在の nkf はデフォルトでは ASCII の範囲はそのまま、
それ以外はJISのマッピングに準拠したマッピングにしています。
Windows の変換と同じ変換、すなわち CP932 互換の変換をしたい場合は、
--cp932 で行うことができます。
なお 2.0.6 では nkf --ic=CP932 --oc=UTF-8 と、iconv っぽく使えます。
省10
186
(1): 2006/12/08(金)02:57 AAS
IDに注目。
なんかうれしい。
187: 186 2006/12/08(金)03:00 AAS
俺はバカだ。ここはUNIX板じゃないか(泣
(ちなみに俺の今の -> "nkf2PDI3")
188: 成瀬 ◆NBGqNARUSE 2006/12/09(土)03:04 AAS
おめw
189
(3): 2007/01/19(金)11:03 AAS
バグでしょか? 2.0.7 と CVS 先端で再現します。

1. MIME デコードしたりしなかったりする

% nkf -e
あいうえお =?iso-2022-jp?b?GyRCJCIbKEI=?=
あいうえお =?iso-2022-jp?b?GyRCJCIbKEI=?=
% nkf -e
こんにちは =?iso-2022-jp?b?GyRCJCIbKEI=?=
省8
190
(1): 2007/01/19(金)12:18 AAS
MIMEのオプションも指定しなきゃだめだよ
191
(1): 189 2007/01/19(金)13:37 AAS
>>190
>>190 さんは MIME のオプション指定で再現しなくなりましたか?

NKF 1.9以降は MIME のオプション (-m) はデフォルトで有効になっていると思います。
試しにそれぞれに -m オプションを付けてみましたが、同じ出力結果となりました。
192: 2007/01/20(土)00:07 AAS
nandedaro
kizukebakokanni
fuzisanga...
193: 2007/01/20(土)00:26 AAS
あいうえお =?iso-2022-jp?b?gqA=?=
194: 成瀬 ◆NBGqNARUSE 2007/01/21(日)07:32 AAS
とりあえず現状を。
1. エンコーディングの確定前にMIME文字列が出現した場合認識しない
2. 一部のエンコーディングでMIME encodeされたJISな文字列が文字化け
の二つの問題と認識しています。
後者は手元で修正しました。
前者は現在ちとてこずっています。
回避方法としては、エンコーディングがわかる場合は明示的に指定する、になります。
195: 189 2007/01/21(日)14:59 AAS
前者の方ですが、確かに入力のエンコーディングを指定したらうまくいきました。
自動判定が絡んでくるとなると厄介そうなのはなんとなく想像つきますので、
あまり期待しないで期待しておきます(?)。
対応ありがとうございます。
196: 189 2007/01/30(火)16:59 AAS
CVS 先端で後者の方が直っていました。ありがとうございました。
197
(2): 2007/11/17(土)12:16 AAS
>>191
> NKF 1.9以降は MIME のオプション (-m) はデフォルトで有効になっていると思います。

まじかよ
なんだよ、このウンコ仕様は。
さよなら、nkf。
198: 成瀬 ◆NBGqNARUSE 2007/11/18(日)06:47 AAS
>>197
わたしも微妙な仕様で正直変えたいと思っているのですが、
調べたところどうも1.7あたりから導入されているらしく、
いまさらそう簡単には変えられないというのが現状です。

っと思っていたのですが、Ruby1.9にあわせてnkfを2.1にし、
そこでこの手の変えづらかった仕様に手を入れてしまうのもありな気がしてきました。
少し検討してみます。
199
(1): 197 2007/11/18(日)12:20 AAS
真面目なレスありがとう。
過去のnkf利用scriptが走馬灯のように思い浮かんで欝になりました。

-Xがdefaultである件も、前から何だかなーと思ってます。
出力がISO-2022-JPの場合は仕方ないんだけど。
200
(1): 成瀬 ◆NBGqNARUSE 2007/11/19(月)17:11 AAS
>>199
とりあえずMIME decodeの方はconfig.hに
#define MIME_DECODE_DEFAULT FALSE
とでも書いてmakeすればデフォルト無効になります。

-Xの方はソース眺めていて-Iとの絡みが謎なので解読中。
似た方法でデフォルトを変えられるようにする方向です。

あー、バージョン情報かヘルプにデフォルトの設定出すようにした方がいいかな。
201
(3): 2007/11/19(月)22:12 AAS
>>200
> あー、バージョン情報かヘルプにデフォルトの設定出すようにした方がいいかな。

あ、それあると嬉しい。
man あたりに "DEFAULT FLAGS" みたいなエントリ作れば良いのでは?

--help やって気付いたけど、標準エラー出力に投げるんだね。
これはソース見てすぐにどこいじれば標準出力に変更できるか分かったけど。
202
(1): 2007/11/20(火)03:03 AAS
>>201
>> あー、バージョン情報かヘルプにデフォルトの設定出すようにした方がいいかな。
>あ、それあると嬉しい。
>man あたりに "DEFAULT FLAGS" みたいなエントリ作れば良いのでは?
コンパイルオプションは最終的にconfigureで設定できるようにする予定なのですが、
こっちはNKF.pmのコンパイルが微妙になることに気づいてどうしようかなとか。
ていうか、Encode.pmが標準添付なこの時代にNKF.pmとか使う人いるんだろうか。
省4
203: 2007/11/21(水)00:17 AAS
>>202
>>--help やって気付いたけど、標準エラー出力に投げるんだね。
> ですね、以前に微妙かと思って手元にあったコマンドがどこにヘルプ投げるか調べたら、
> どっちもあったんですが、標準出力の方がいいですか?

量が多い時にページャに渡すときに一手間増えるかなと。
といっても 2>&1 を追加するだけなんで、あまり気にしなくておk。
204: 2007/11/21(水)17:17 AAS
デフォールト・オプション大変りなnkfは、nkf3として、
/usr/bin/nkf
/usr/bin/nkf3
が共存できるようにするとか。

Debian的には、
/usr/bin/nkf2
/usr/bin/nkf3
省3
205: 2007/11/22(木)14:10 AAS
nkf3 って名前で install するのは .deb のパッケージシステムで
(すまん俺 .rpm なシステムしか知らん)やる事じゃまいか?

問題になるようなら他のシステム(portsとか)でも多分そうすると思う。

コンフィグorメイクのオプションで設定可能にするのは構わないと
思うがデフォルトを nkf3 にするのはどうかと。
206: 2007/11/23(金)01:00 AAS
debianだと、たとえ本家がnkf-2.1だろうと、
メインテナが互換性上別にした方がいいと考えたらnkf3_2.1になる。
だから気にしないでいい。
207
(1): 成瀬 ◆NBGqNARUSE 2007/12/07(金)13:25 AAS
とりあえず config.h で -m と -x のデフォルトを変えられるようにしました。
#define MIME_DECODE_DEFAULT 0
#define X0201_DEFAULT 0
で -m0 -x を指定しているのと同じ状態になります。

また、nkf -V でコンパイルオプションを表示するようにしました。
Summary of my nkf 2.0.8 (2007-12-07) configuration:
Compile-time options:
省7
208
(1): 201 2007/12/16(日)17:44 AAS
>>207
> また、nkf -V でコンパイルオプションを表示するようにしました。
GJ。
と言いたいところなんだが、手元でコンパイルして表示してみたら
Default output encoding: と下の二行の表示位置が空白一個分
ずれてるよ。

$ diff nkf.c.orig nkf.c
省4
209: 成瀬 ◆NBGqNARUSE 2007/12/19(水)03:47 AAS
>>208
直しました、報告どうもです
210
(3): 2007/12/30(日)01:49 AAS
nkfを次の様に使ってますが稀に文字化けします、文字化けしないような使い方がありますか?
mplayer ファイル名 | nkf -wu
文字化けの例
ファイル名は05.バレエ組曲「くるみ割り人形」アラビアの踊り.mp3


Failed to open LIRC support. You will not be able to use your remote control.
Playing 05.繝舌Ξ繧ィ邨峇縲後\繧九∩蜑イ繧贋ココ蠖「縲阪い繝ゥ繝薙い縺ョ雕翫j.mp3.
省6
211: 201 2007/12/30(日)02:00 AAS
>>210
元ファイル名の文字コードが SJIS 固定と決まっているのなら

nkf -Swu
212: 2007/12/30(日)02:20 AAS
ファイル名がutf8なんだろ。
213: 成瀬 ◆NBGqNARUSE 2007/12/30(日)17:15 AAS
nkf は行ごとに文字コードを判定することもあったようなその部分は壊したような、

とりあえず、ID3タグのみがShift_JIS (たぶんCP932)なのですから、そこだけ変換するべきでしょう。
mplayer | ruby -nrnkf -e'puts /^(Title|Artist)/=~$_ ? NKF.nkf("-w --ic=cp932",$_) : $_'
これだとバッファ周りがだめそうですが
214: 210 2007/12/31(月)01:36 AAS
ありがとうございます

rubyさっぱりわからないですが試してみました
ファイル名は変換されますがID3タグが化けます、
それよりも秒数がまとめて出力されてしまう
Title: `CRtXL[ o
Gg
ネu
省12
215: 成瀬 ◆NBGqNARUSE 2007/12/31(月)17:59 AAS
あー、秒数とかがダメか。
てっとり早い解決策は、ID3タグをID3v2 (Unicode)に変換することじゃないかなぁ。
一括変換できるソフトはSTEPくらいしか知りませんが。
外部リンク:hp.vector.co.jp

それ以外だとファイル名が化けるのはあきらめて nkf -uwS とかかな。

結局のところ出力がUTF-8の行とShift_JISの行が混在しているのが問題なので、
そろえてしまわないと解決は面倒になります。
216: 210 2008/01/06(日)21:14 AAS
ID3タグをUnicodeにすることも考えましたが
そうすると他の機器で文字化けが、、、
mplayerでファイル名が化けることはそんなにないので
当面このままでいきます、ありがとう
217
(1): 成瀬 ◆NBGqNARUSE 2008/01/21(月)17:12 AAS
先日デフォルトの出力エンコーディングを指定できるようにしたわけですが、
よくよく考えればロケール見て決めてくれよと思いつく。。。
218
(1): 2008/01/24(木)02:29 AAS
>>217
端末の locale 見て自動変換してくれると便利だよね。

Ruby でその機能が欲しくて NKF 使ってライブラリ作ったけど
1.9 で動くか試してないや。
219
(1): 2008/01/24(木)11:16 AAS
うーん。locale見るのはUIのレイヤでやってほしいかなぁ
内部のエンジンがそういう暗黙の挙動をするのは嬉しくないかも
220
(1): 2008/01/24(木)15:08 AAS
>>218
Ruby 1.9 だと Encoding.locale_charmap がエンコーディング名とか、
Encoding.default_external がエンコーディングオブジェクトとかありますが、
Kconv に tolocale とこっそりつっこんだので、これ使うと楽です。

>>219
> うーん。locale見るのはUIのレイヤでやってほしいかなぁ
> 内部のエンジンがそういう暗黙の挙動をするのは嬉しくないかも
省3
221: 2008/01/24(木)19:36 AAS
nkf"コマンド"ではやって欲しいな
222
(1): 成瀬 ◆NBGqNARUSE 2008/01/24(木)21:32 AAS
Ruby 拡張ライブラリだとどうしましょうかね。
* 今まで通りデフォルト JIS
* いやいや時代は UTF-8
* 自力でロケールはないとして、
* Encoding.locale_charmap
* Encoding.default_external
* 指定しないとエラー
223: 2008/01/25(金)02:42 AAS
>>220
Kconv#tolocale ね。 それは便利そうだ。

>>222
NKF#nkf の挙動の話だよね?
個人的には Kconv#tolocale があるんだし、
NKF は処理速度重視であって欲しいかな。

どれが一番速いのかは分からないけど。
224: 2008/01/25(金)11:22 AAS
nkfを使うということをプログラマが選択した時点で、
コード変換に注意を向けているわけですから、指定しないとエラー、
がいいんじゃないですかねぇ。

こっちじゃ動いたけどあっちじゃ動かない、系のトラブルも
回避できますし。
225: 2008/03/01(土)20:48 AAS
nkf --guessで、ファイル名も表示する方法ない?
複数ファイル入れた時は、表示されるんだが・・・
226: 成瀬 ◆NBGqNARUSE 2008/03/01(土)21:43 AAS
nkf 単体でやる方法はありませんね。
常にファイル名表示ーするとたぶん問題なんだろうなぁ。
227: 2008/03/01(土)23:04 AAS
/dev/nullを加えてnkf -gしてgrep -v /dev/nullする
228: 2008/03/01(土)23:11 AAS
先にecho -nしとこうぜ
229: 2008/04/12(土)02:41 AAS
フォルダー内のテキストやHtmlを一括で漢字エンコードするソフトを教えて下さいと2chで頼んだら
こちらのソフトを教えていただきました
下記アドレスを見たんですけど使い方がさっぱりわかりません
外部リンク[txt]:sourceforge.jp

このツールで大量のテキストのエンコードを一括変換させるにはどのようにすればいいのでしょうか?
Windows xp
フォルダー内にはEUCのものとUTF-8のものとがあります
省5
230
(1): 2008/04/12(土)03:27 AAS
悪いこといわんから、Windows用の専用ツール使いなよ。
窓の杜行けばあるでしょ。
231: 2008/04/12(土)03:37 AAS
>>230
えっそうなんですか
もうひとつ漢字とらんさーというツールも教えてもらったんだけど
フォルダーごとエンコードしてみたら2割くらいはバイナリかもしれないと
エンコード出来なかった表示がでてきた
それでファイルを1枚づつ確認してみたら
見事に1枚もエンコード変換できていませんでした
省5
232
(1): 2008/04/12(土)03:50 AAS
nkfの自動判別使った奴があるから探して使いなよ。

nkfでやりたかったら、↓のシェルスクリプト使いな。

#! /bin/sh
for i in "$@"; do
mv "$i" "$i.org"
nkf -s "$i.org" > "$i"
done
省1
233: 2008/04/12(土)04:16 AAS
>>232さん
お疲れのところ本当にありがとうございます
>>232さんがおっしゃるとおり
簡単操作のツールでなければ使えないかもしれないです^^;
でもせっかく教えてくれたスクリプトなので頑張ってみます
ありがとうございました
おやすみなさい^^
234
(1): 2008/08/28(木)02:12 AAS
最近 nkf のリリース無いね。
SourceForge 見る限りではメンテはされているみたいだけど。
そろそろ 2.0.9 とかが出てもいい頃だと思うんだけど。
235: 2008/08/29(金)06:02 AAS
どのような変更を期待なさっているので
236: 2008/11/05(水)21:10 AAS
>>234
Rubyの方で忙しいもので。
まぁ、さすがに放置が過ぎるので、Ruby1.9.1リリースあたりのタイミングで、
Ruby添付と同じものをリリース版として置こうかなと思ってます。
237: 2009/01/22(木)04:32 AAS
というわけで nkf 2.0.9 を出しました。
Perl モジュール部分が壊れていたので、Perl で使い方は Git から最新版を落としてくださいまし
238
(1): 2009/01/22(木)09:17 AAS
いやがらせですねw
239
(1): 2009/02/02(月)12:20 AAS
2.0.10マダー
1-
あと 98 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s