/
Changes
536 lines (316 loc) · 14.5 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
2003-09-28 Shinji KONO
b encoded ISO-8859-1 MIME
MIME のencoding を信用するようにした方がいいかも...
2002-10-06 Rei FURUKAWA <furukawa@tcp-ip.or.jp>
* INSTALL, INSTALL.j, make_test.pl を追加
2002-10-04 Rei FURUKAWA <furukawa@tcp-ip.or.jp>
* 入力文字コードが確定する前に h_conv を抜ける場合の
判定精度を上げた
2002-09-29 Rei FURUKAWA <furukawa@tcp-ip.or.jp>
* デフォルトの出力コード選択を config.h に移動
* SunOS の cc でコンパイルできるようにした
* -OW をやめて、代わりに --overwrite にした
* [sw]_iconv から変換部分を別関数に分離した
Date: Thu Sep 26 23:12:03 JST 2002
SourceForge のCVSに登録しました。
cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/nkf login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/nkf co nkf-2
Subject: Re: nkf 2.0
From: kono@ie.u-ryukyu.ac.jp (Shinji KONO)
Date: Tue, 24 Sep 2002 23:18:54 +0900
Content-ID: <5196.1032877134.1@insigna.ie.u-ryukyu.ac.jp>
河野 真治@琉球大情報工学です。
utf のtable のチェックだけど、やっぱり、落ちまくるので、
一通り、直しました。変なコードの入っている文書は結構多い...
ついでにUTF16も付けました。
-W16 -w16
みたいにしました。
自動検出はしないけどね。
なんか、Mac OS XのiCal がUTF16を要求するので...
これはiCalのバグでしょうね。
Subject: nkf 2.0
From: Rei FURUKAWA <furukawa@tcp-ip.or.jp>
Date: Mon, 16 Sep 2002 06:47:39 +0900
古川です。
河野さんの 2.0 に、こちらでの変更点をマージしました。
http://www01.tcp-ip.or.jp/~furukawa/nkf-utf8/nkf_utf8-2002.09.15.tar.bz2
バグ修正も含むので、是非見ていただけたら、と思います。
2.0 からの変更点は、以下の通りです。
[1] 仕様の有効/無効を切り替える #define を、nkf.c の中ではなく、
config.h に置くようにしました
[2] UTF8_SUPPORT を UTF8_INPUT_ENABLE と UTF8_OUTPUT_ENABLE に
分けました。これにより、utf-8 出力機能の不要な人は、そちらだけ
を無効にすることができます。
[3] 入力文字コードをオプションで指定した場合には、そのコード
から全く遷移しないようにしました。
v1.92 では、-S などを指定していても、途中で自動判定に戻ること
がありましたが、それを止めました。
[4] 先日の河野さんの、
kono> hconv の中で、igetcしちゃってるみたいだけど、そうすると、
kono> そのigetcに JISの最初のESCが、あったりすると、困るんだよね。
という御指摘に従い、h_conv で ESC を見つけたら、ループから抜ける
ようにしました。
[5] --cap-input, --url-input オプションを新設しました。これにより、
http://google.com/search?q=%8C%9F%8D%F5
といった入力から
http://google.com/search?q=検索
を出力するようなことができます。
[6] --no-output, --debug オプション
主にチェック用ですが、2 つ組み合わせると、
% nkf --no-output --debug hogehoge.txt
Shift_JIS
のように判定した文字コードが stderr に表示されます。
[7] utf8tbl.c の修正
初期の頃のテーブルには、いくつかの記号で不具合がありました。
こちらでの修正を反映させました。
[8] ロングオプションのバグを修正しました。これは、先日もお伝え
しました通りです。
[9] LSC-C 試食版での動作確認をしました。その際、コンパイルが通ら
なかった部分があったので、修正しました。 (試食版では UTF8 は使え
ませんが)
また、MS-DOS でも OVERWRITE が 動くようにしました。
[10] OVERWRITE のテンポラリファイルを元ファイルと同じディレクトリ
に作るようにしました。
カレントディレクトリに作った場合、
ファイルシステムをまたぐ rename になる可能性がある
カレントディレクトリが書き込み禁止だとオープンできない
のが理由です。
-------------------------------------------------------------
それと、2.0 についていくつか思ったことがあります。
[1] 2.0 では -OW で overwrite となっていますが、これはあまり
よくないように思います。
それは、他の文字コードの -OE, -OS などは、「-O と -E (-S)」と
いう意味で使えるのに、-OW だけが「上書き」になってしまうのは、
直交性という点で混乱しそうだからです。
私としては、-R のような別の文字を使うか、または、--overwrite
や --replace のようにロングオプションだけにしてしまうほうが、
不意に元ファイルを書き換えてしまう危険が少ないと思います。
[2] nkf.shar では、あらかじめ NKF.mod/ を作っておかないと、
エラーになってしまいます。まず mkdir するようになっていた方が
よいのではないかと思います。
具体的な修正方法は、私には分かりません。すみません。
[3] アーカイブの中に NKF.mod/Makefile が含まれていますが、これ
は、一般的な環境では必要ないと思います。
--
Rei FURUKAWA
furukawa@tcp-ip.or.jp
Subject: Re: nkf 1.9 MIME-Q decode
From: kohno@mercury.nikon.co.jp
Date: Tue, 10 Sep 2002 11:49:48 +0900 (JST)
河野@ニコンです。
> Message-ID: <5075.1031469723@insigna.ie.u-ryukyu.ac.jp>, kono@insigna.ie.u-ry
ukyu.ac.jp wrote
> > nkf 1.9.2 の Q-decode のことについて教えてください。
> ようやっと直した版を作りました。
ありがとうございます。
# ver 2.0 になったんですね。
> 時間があればチェックしてみて下さい。
とりあえずコンパイルして、以前うまくいかなかった '?=3D' を
確かめました。
当方には(まだ)SunOS4 のマシンが2台あるので、こちらでも
コンパイルしてみました。
以下のパッチをあてるとコンパイルできますので、
お礼を兼ねてご報告とさせていただきます。
# このパッチで HP/UX 10.20, 11.00 の OS 付属の cc でコンパイルできました。
Subject: nkf + utf8
From: Rei FURUKAWA <furukawa@tcp-ip.or.jp>
Date: Wed, 21 Aug 2002 03:53:15 +0900
Namazu project の古川と申します。
# 以前 (2000 年 12 月)、nkf 1.92 のバグ報告をした者です。
namazu ML で、「utf-8 のファイルを検索できないか」という話題が
出て、
nkf が utf-8 を euc-jp に変換できるようになれば、入れ換え
るだけで (Namazu 側で何もしなくても) 自然と扱えるようにな
る (もちろん、日本語限定ですが)
と思い、試しに nkf を utf-8 対応にしてみました。
http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/
に置いています。utf-8 のファイルを入力すると、自動判別して変換
できるようになっています。(utf-7 や utf-16 などには対応してい
ません)
.SS "kono@csl.sony.co.jp (Shinji Kono) による変更。"
X0201仮名(いわゆる半角かな)はデフォルトでX0208(全角仮名)に変換される。
ただし、 Shift_JIS のX0201仮名
はデフォルトではEUCだと解釈されてしまう。これが望ましくない時には -S や
- -X などのフラグを使えば良い。-Xを指定すると一旦確定した Shift_JIS から
EUCに移行することはない。ESC-(-Iによる X0201は常に認識される。SI/SO
SSOは、-lが指定されていなければX0201と解釈する。
MIME decodeは、ISO-2022-JPのbase64と、ISO-8859-1の16進encodeのみ
decodeする。 MIME decodeは、単純な改行や空白は安全に読み飛ばされる。
ということは、 MIME decode中の空白は保存されない。変換は可逆ではない。
lessやrnで行が分割された時は、 Terminalによって異なる ESC-[-K などが挿入
されるので、完全にはdecode できない。-mN では、チェックが緩いので
decodeできる場合もある。
ISO-8859-1 出力はJIS コード出力としか両立しない。
Fold 機能はfmtと異なり行頭の空白を無視する。禁則処理はあるが指定された
長さ+10で強制改行する。-f60-10 などとすると強制改行の余地(fold-margin)
を調整できる。-f40-0とすると禁則処理なしとなる。
X0201仮名はrot47されない。
.SS nkf 1.6 "kono@ie.u-ryukyu.ac.jp (Shinji Kono) による変更。"
-B のlevelを0,1,2 に増やした。MIMEのbase64, Q-Encodingを解読する
機能を付けた。ヘッダなどは解読しないので、Encodeされた部分だけを
通す必要がある。 -mB は、nkf1.5と違う動きをするので、-B -m とすること。
.SS nkf 1.6.1
-Z1 でX0208間隔->ASCII spaceの変換をおこなう。
-Z2 でX0208間隔->ASCII space 2個の変換をおこなう。
.SS nkf 1.7
ESC-$-(-B などにも対応するようになった。
copy right の非営利の条件が不要になった。使用時の問い合わせも不要。
Perl Extension として使えるようになった。
.SS nkf 1.9
MIME エンコードの機能時でも、コード変換されしまうので注意。
base64 エンコードでは改行時に先頭に空白が付くのでメールヘッダ
に使用できる。
コード変換モジュールは、サブルーチンを継続によって接続する
形式となった。複数の変換を自由に接続できるようになった。
getc <-- iconv --> oconv --> other conversion --> putc
という形で、順に呼び出される。
長いオプション名を許すようになった。
--mac
--jis
--unix
など。
.SS
UTF-8 サポートについて
furukawa@tcp-ip.or.jp による。
従来の nkf と同様に、nkf -e として起動すると、自動判別で
UTF-8 と判定されれば、そのまま euc-jp に変換される。
オプションで、文字コードを指定できる。
-w 出力を utf-8 に指定します
-W 入力を utf-8 と仮定します
特に自動判別、コード混在、エラー処理系には判定を失敗することがある。
-Z3 オプションの新設
X0208 の '>', '<', '”', '&' をそれぞれ
'>', '<', '"', '&' に変換します
.SS nkf 2.0
newline を保存する folding -F。fmtに近い動作をする。
folding のマージン。-f60-0 などと、0にすると禁
則せずに、強制的にfoldingする。携帯にメールを送るときに使う。
nkf -f40-0
などとしてメールを 40 文字づつ切り出して、
「Subject 160 文字目から 199 文字目まで」
「本文 200 文字目から 239 文字目まで」
とする。
MIME関係
fixed mime mode ( -mQ ) で =? で Q-encode が抜けてしまうバグの修正。
Q encode の Soft Wrap に対応。
MIME encode のWrapでは、先頭に一文字の空白挿入。
した。あA の MIME 変換は、A を含んで変換しないといけ
ないが、対応していない。RFCには反した動作だが、
encoded word 間のwhite spaceは無視される。
nkf_test.pl では、MIMEの空白を削除してから比較している。
non-strict mime -MN では、空白、改行をまたいで、base64 encoding
を解読する。これで、スクリーンからcut&pasteで
デコードすることも可能。止まらない可能性あり。
その他
nkf_test.pl のバグチェックを増やした。
test が失敗したときにdiffを取るようにした。
make_test.pl でテスト作成可能。
Perl moduleで、\\0を含む文字列も変換できるようになった。
Perl XSでの文字列の長さの扱いを修正。
NKFをNKF.modにしたので、Mac OS X でMakeでコンパイル化。
rot13が1.9で動かなくなっていたのを修正。
-Z の間隔やおかしな変換の修正
hiragana/katakana 変換ができるようになりました。
-h1 --hiragana カタカナ->ひらがな
-h2 --katakana ひらがな->カタカナ
-h3 --katakana-hiragana カタカナ<->ひらがな
--overwrite で、引数のファイルを直接、置き換えることができます。
.SS nkf 2.0.4
Shift_JIS の FAxx-FCxx について、普通の式では euc に変換できませんが、CP932 で同値な文字に読み換えて変換します。この動作を無効にするには、--no-cp932 をつけてください。
perl module に
nkf_continue オプション、自動判別の状態などを引き継いで変換
inputcode 自動判別結果の文字コードを返す
を追加しました。
--numchar-input オプションを新設
mhonarc など、日本語を UTF-16 の &#....; のパターンで出力するものを変換します。
--exec-in, --exec-out オプションを新設 (config.h で EXEC_IO を define してコンパイルした時のみ有効)
nkf -e --exec-in cmd args...
とやると、cmd の出力を nkf の入力とします。
nkf -e --exec-out cmd args...
とやると、nkf の出力を cmd の入力とします。
.SS nkf 2.0.5
--cp932inv というオプションをつけると Shift_JIS への変換の際、EDxx-EFxx については、
CP932 で同値な FAxx-FCxx の文字に変換します。
--guess または -g というオプションをつけると自動判別の結果を出力します。
--prefix= というオプションをつけると、EUC-JP から Shift_JIS への変換の際、2 バイト目
に現れた文字の前にエスケープ文字をつけることができます。
引数の 1 文字目がエスケープ文字、2文字目以降にエスケープされるべき文字を指定します。
例えば、
--prefix=\$@ とすると、Shift_JIS の 2 文字目に $, @ が来たら、その前に \ が挿入されます
--prefix=@@ とすると、Shift_JIS の 2 文字目に @ が来たら、その前に @ が挿入されます
-w8, -w16B, -w16L, -W8, -W16B, -W16L というオプションを追加しました。
--ms-ucs-map というオプションを付けると、
MicrosoftのUCSマッピング互換の変換を行います。
.SS nkf 2.0.6
=item B<ひらがなカタカナ変換のドキュメント>
ひらがなカタカナ変換のドキュメントが逆になっていたので、これを修正しました。
正しいドキュメントは以下の通りです。
-h1 --hiragana カタカナ->ひらがな
-h2 --katakana ひらがな->カタカナ
-h3 --katakana-hiragana カタカナ<->ひらがな
=item B<--no-best-fit-chars オプションの追加>
Unicode からの変換の際に、往復安全性が確保されない文字の変換を行いません。
Unicode から Unicode の変換の際に -x と共に指定すると、
nkf を UTF 形式の変換に用いることができます。
(逆に言えば、これを指定しないと一部の文字が保存されません)
パスに関わる文字列を変換する際には、このオプションを指定することを強く推奨します。
=item B<--in-place[=SUFFIX] オプションの追加>
タイムスタンプを保持する --overwrite に対し、
タイムスタンプを更新する --in-place オプションを追加しました。
=item B<fallback オプションの追加>
--fb-{skip, html, xml, perl, java, subchar} オプションを追加しました。
Unicode から Shift_JIS, EUC-JP, ISO-2022-JP に変換する際に、
変換できなかった文字をどう扱うかを指定できます。
=item B<--ic --oc オプションの追加>
--ic=<input codeset> --oc=<output codeset> オプションを追加しました。
Shift_JIS, CP932, EUC-JP, CP51932, eucJP-ms, ISO-2022-JP,
UTF-8N (UTF-8), UTF-8-BOM,
UTF-16BE, UTF-16BE-BOM(UTF-16), UTF-16LE, UTF-16LE-BOM
入力には UTF8-MAC も指定することができます。
=item B<マッピングの追加、変更>
JIS 系の文字コードと Unicode との対応を定義することにしました。
これらから Unicode への decode は、
定義されている範囲での変換が正しく行われる事を保障します。
定義されていない範囲での変換は保障しません。
Unicode からの encode は、定義されている範囲での変換が正しく行われる事を保障し、
定義されていない範囲での変換はエラーとなり(fallback 可能)、
Unicode として不正な文字はスキップされる事を保障します。
その他、"Q" encodingのデコードやfold-margin等のバグを修正。
.SS nkf 2.0.7
* CP51932 の文字が fallback されないのを修正。
* gcc 以外でコンパイルできないのを修正。
* ANSI C 化.
* MIME encode の改行周りのバグを修正。
* -t2MB でバイナリファイルも base64 できるようになった。
.SS nkf 2.0.8
* --guess で改行コードを表示
.SS nkf 2.0.9
-Z4 オプションを追加しました。JIS X 0208 カタカナを JIS X 0201 カタカナに変換します。(つまりカタカナの全角半角変換)
-g=0, -g=1, --guess=0, --guess=1 オプションを追加しました。改行コードの推測を行います。
コンパイルオプションをいくつか追加しました。詳細は config.h をご覧ください。
その他のバグフィックスを行いました。詳細はgit のログをご覧ください。
ライセンス変更を、独自ライセンスから zlib ライセンスに変更しました。事実上の許諾条件は変わらないため、ライセンス確認の手間の削減がメリットだと思われます。
バージョン管理システムを CVS から git に変更。
.SS nkf 2.1.0
Makefile に install という target を追加
8bit JIS 内のいわゆる半角カナを解釈するようにした
Perl モジュールが作成できなかったのを修正
-Z1 と -Z2 が -Z0 の効果を持ってなかったのを修正
UTF-16 と UTF-32 の読み込み指定が出来ていなかったのを修正
UTF-32 で BOM を出力していなかったのを修正
4 バイト UTF-8 の guess と出力ができなかったのを修正
.SS nkf 2.1.1
Shift_JIS の alias に MS_Kanji を追加
eucJP-ms と eucJP-ascii がいわゆる半角カナを全角に変換していたのを修正
CP50220 がいわゆる半角カナを全角に変換していなかったのを修正
その他のバグ修正
.SS nkf 2.1.2
Q-encoded UTF-8 のデコードが壊れていたのを修正 [nkf-bug:55125]
.SS nkf 2.1.3
NKF_python をマージした
http://sourceforge.jp/ticket/browse.php?group_id=248&tid=27841
guess オプションの強化
http://sourceforge.jp/ticket/browse.php?group_id=248&tid=26325
http://sourceforge.jp/ticket/browse.php?group_id=248&tid=26325
その他バグの修正
http://sourceforge.jp/projects/nkf/scm/git/nkf/