[pgsql-jp: 33599] Re: EOFの問題について

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2004年 7月 9日 (金) 21:56:05 JST


仲村です


 何人か個人宛に送りましたが、MLにも出しておこうかなと。
私が何となく思っているだけで、正しいという根拠は
なかったりするんですが、間違っている部分は指摘していただければ
知識になり嬉しいです。


 SJIS や、JIS の \ は、規格上は円記号のはずです。
なのに Windows や Unix では Unicode に変換する際に
平気で違う形のバックスラッシュ(005C REVERSE SOLIDUS)に
変換してしまいます。
 それは、PATH の区切り文字だったり、エスケープ記号だったり
して文字コードの 0x5c が別の値に変わってしまうと OS が
正常に動かなくなる可能性があるという しがらみ からなのでしょう。
# SJISでコメントを書いたバッチファイルや、EUC で
# コメントを書いたシェルスクリプトを UTF-8 へ
# 変換しただけで動かなくなったりしたら困りますから。


 ですが、Mac にはそんな しがらみ はなく
(大多数の Macユーザには \ が特別な記号ではない)
見た目を忠実に保存するために Unicode の'00A5 YEN SIGN'に
マップするのです。
'00A5 YEN SIGN'にマップされたら JIS に変換するときは、
バックスラッシュと区別の付かなくなる 0x5c ではなく
違いが保存できる全角の円記号に変換されると。

# Unicode 上でバックスラッシュでない文字がバックスラッシュに変わったら
# SJIS の \ を含む漢字のように、更にやっかいな話しが
# 出てきたかもしれませんので、そこは責めない方が身のためかと。


 これは一般ユーザに優しい仕様だとおもいます。
 開発者にとってはこうやってはまっていく大きな罠になるわけですが(^^;

 それだけ(仕様)の話しなんだと思います。


 メーラに入力するときに SJIS で入力して送るときには
SJIS ==> Unicode ==> JIS と変換される過程で \ が ¥に
変わってしまっただけでしょう。
# SJIS => JIS は直接計算して変換してくれ〜といいたいところですが、
# 日本語だけ特別扱いしたコンバータを作るのは面倒でしょうから
# 汎用的(他の言語も扱えるよう)に Unicode 経由になるのは仕方ないでしょう。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>
 Mac は 漢字Talk 7.1 〜 MacOS 8.5ぐらいまでしか使ったことがない人でした。



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