[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:90992] Re: 外字の扱い


 しらいです。

 最初からそんな Windows でしか読めないような文字を使わない
ようにしておけばいい、というのが本質論だとは思いますが :-)

In Message-Id <20020131183944O.stanaka _at_ ya2.so-net.ne.jp>
        TANAKA Shuichi <stanaka _at_ ya2.so-net.ne.jp>さんwrites:
> 田中@愛知県春日井市です

> 宮崎 の 「崎」が消えてしまうのでおかしいと思っていたら、こいつが「山」
> +「奇」ではなく、「山」+ 「立」+「可」 (SJIS で FAB1) でこれが原因でおか
> しなことになっていました。

 それは IBM 拡張漢字なので、JIS X0208 (or JIS C6226) をベー
スに定義されている EUC-JP や ISO-2022-JP には対応する文字コ
ードが存在しません。
 その辺りの歴史的経緯については最近読んだ本に載ってたと思う
ので、詳細が知りたければそういう文献をあたって下さい。
	「インターネット時代の文字コード」(共立出版)
	ISBN4-320-12038-8
	http://kyoritsu-pub.topica.ne.jp/bit/mojicode.html


> どうも nkf ではこの手の文字には関知しないようなのですが、どういう前処理
> をするのが一番いいでしょうか? sjis -> euc のあいだで、「豆腐」にするよ
> うなコマンド、もしくは sjis で perl に読み込んでこれらの文字を処理するう
> まい方法があれば教えて下さい。どうぞよろしくお願いします。

 ShiftJIS の時点で 1bytes 目が 0xf0 以上の文字を全部ゲタ(〓)
化してしまってから nkf にかければいいんじゃないでしょうか?

 簡単な filter を Perl なり C なりで組むのは楽だと思います
が、既存のツールを組合わせて用いるなら、tr(1) と sed(1) の合
わせ技でしょうか。sed(1) だけだと 0xf0-0xfc の指定が出来ない
もので。
	cat src \
	| tr '\360\361\362\363\364\365\366\367\370\371\372\373\374' '?'
	| sed 's/?./〓/g' > dest
 DOS 側で ShiftJIS を扱える sed を使って 0xf040-0xfc4b の文
字を直接 sed の command 文字列に書いた方が楽ですね。0xf040-
0xf9fc の範囲は外字領域なので、一般には 0xfa40-0xfc4b で十分
でしょう。

                                               しらい たかし


この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: