[FreeBSD-users-jp 96174] Re: zipアーカイブ中の日本語ファイル

Tomoaki AOKI junchoon @ dec.sakura.ne.jp
2017年 11月 19日 (日) 13:33:20 UTC


青木@名古屋です。

On Tue, 14 Nov 2017 21:28:10 +0900
しらい たかし <shirai @ unixusers.net> wrote:

>  しらいです。
> 
> On 17/11/13 21:53, Tomoaki AOKI wrote:
> > 青木@名古屋です。
> 
> > FDcloneといえば、UTF-8の日本語ファイル名のファイルが多数ある
> > ディレクトリの表示が異常に遅かったりするのは何か設定で対策
> > できるのでしょうか? lsやmisc/mcでは発生しないのでFDcloneの
> > 内部処理で何かあると踏んでいるのですが。
> 
>  内部コードの EUC-JP との間で変換が大量に発生して遅くなって
> いるんだと思います。付け焼刃ですが UNICODEBUFFER=1 に設定す
> ると多少はましになるかと。

ありがとうございます。 .fd2rcに追加してみたら、多少どころか
劇的な改善でした。 運・不運の問題もあるかもしれませんが、
今のところ特に副作用も見られません。
名前からすると、全て都度変換していたのを変換結果をキャッシュする
動作に変えるのでしょうか? それとも、文字単位の変換からある程度
バッファリングしてからの一括変換に変更?
あぁ、ソースを読んでいないのがバレる...。


>  UTF-8 を内部コードにという要望はかねてからあるのですが、グ
> リフ幅の判定が難しいので及び腰です。テーブルを用意して端末毎
> に動的に切替える必要があるので結構大変です。

なるほど、EUC-JPならMSBが立っているかどうかで判定できますね。
UTF-8だと判定用の(でかい)ビットマップを持たせるか全角にする
範囲の(複数の)始点・終点のテーブルを作って判定するかに
なりそうですが。 非ASCIIの半角文字を使う言語圏のユーザや
2バイト半角の場合に表示が間延びし得る点を泣いてもらう前提なら
MSBが立っているかどうかでの判定も可能ですが...。

 https://ja.wikipedia.org/wiki/UTF-8

オリジナルFD作者の出射さんにご自分ならどうするか聞いてみたい
気もしますが、今となっては...ですね。
そもそも、一時はご自身がメインで使っておられたOS/2への移植も、
当時「WPSがあるのに今更FDでもないじゃろ」と一蹴されてしまい
ましたから、まだコンパチまで作って使っとるのか、と笑われるかも。
CUIが現役バリバリな環境では無くてはならないほど便利なのですが。

なにやらsysutils/fdなどというfind代替品も追加されたようで、
思い切りconflictするので人によってはどちらを入れるか悩む
ことになるかも?

# 後発の方の名前を変えて欲しいところですが...。
# PKGNAMESUFFIXを設定してfd-[0-9]*にCONFLICTS_INSTALLしている
# 割にshells/fdの Makefile は更新されてないので片手落ちですが。


> >>  2 はリソースが Sjift_JIS 以外のコードだと誤解して変換して
> >> しまった結果だと思うので、nkf に -s オプションに加えて適切な
> >> --ic オプションを設定してやることで復元出来るかも知れません。
> > 
> > こちらは別途丸山さんのメールへの返信で書いたように、化け方が
> > 1と同じなら文字コード指定がないからiconvの機能を使っていない
> > だけ、違う化け方ならしらいさんのおっしゃるとおりかと。
> 
>  どちらも nkf でも直らないということなので、UTF-8 以外のコ
> ードで出力さえたという単純なことではないと思います。1 は MSB
> 欠落のようですが 2 は何だったんでしょうね?
>  気になります。

別途梅本さんからportsのunzipは「8 ビット透過ではないみたい」
との指摘がありますが、同時に「標準で入っている unzip は 8 ビット
透過」とのコメントも。
となると、丸山さんのpath設定で/usr/binより/usr/local/binが優先
されるようになっている前提だと、
 ・1はMSB欠落で壊れていてnkfでも変換できないのが当たり前
 ・2は、UTF-8に対応するからには8bit透過は不可欠なので、
  コード認識がうまくいっていない可能性が高そう。
 ・3は、よくよく丸山さんのコメントを見ると「3 だけが私が理解
  できる文字コード」としかなっていないので、全体が正常なのか
  分からない。(部分的には正常と思われる)
ということになってしまいます。

いずれにせよ、その後の丸山さんのコメントでは/usr/bin/unzipと
nkfとの組み合わせ(入出力両方のコードを指定)でうまくいった
ようですね。

> 
>                                                 しらい たかし
> _______________________________________________
> freebsd-users-jp @ freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
> To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe @ freebsd.org"
> 


-- 
青木 知明  [Tomoaki AOKI]    <junchoon @ dec.sakura.ne.jp>


freebsd-users-jp メーリングリストの案内