えー、どうも詳しい人同士で議論して初心者置いてきぼりモードに突入しているようなので、ここでおせっかいにも初心者向け解説を入れてみる

404 blog not foundの「Encode - 規格のバグまでは直せません 」より

b:note: Encodeのナゾ
最近会う機会が無いので、トラックバックします。

$moji = "~";
Encode::from_to($moji, "euc-jp", "utf8");
print $moji;

で出てきた文字をWindowsのメモ帳とか秀丸でみると、~の波形が反対になった文字になってしまいます。

ここでいう「~」はU+FF5E、Fullwidth Tildeのことです。



その答えは、「Unicode Consortiumが用意したJISX0212とUnicodeの変換表がそうだったから」ということになります。Encodeのせいではないのです。




まず、用語をはっきりさせよう。
今、Windowsマシンで普通に打てる全角波線(~)はJIS X 208(いわゆる第一、第ニ水準)に含まれる波ダッシュ(WAVE DASH)という文字です。

つまり、我々が普段使っている日本語Windowsマシンで全角のチルダや半角の波線は存在しない(事になっている)
でも、まあカタチが似てるからみんなごった煮で使うんだけど。

で、JIS X 212、いわゆる補助漢字の規格で全角のチルダ(Full Width Tilda)が追加されてます。

んで、下の表はwikipediaのチルダの項から拝借してきたのだけどMS WindowsのフォントだとWAVE DASHはチルダとは波が逆になっている。

(なぜかこの下にどえらい余白が出来ているが直せない。ごめん)

















記号 Unicode 実体参照 名称
U+FF5E ~
~
fullwidth tilde
U+301C 〜
〜
wave dash


ま、波打ってる線には違いないから文句をいわれる筋合いはありませんな。

wikipediaの波ダッシュの項を見ると規格で逆向きが正しいんだ~みたいな事が書いてあるので調べてみると

Unicode 3.0(ごめん最新版は持ってないの)の例示字体は確かに逆。
でもJIS X 221:1995(UnicodeのISO規格がISO10646でJIS X 221はその翻訳)ではチルダと同じ向きになっている。
JIS X 221はこの件に限らずUnicode Specificatonと細かなところが色々違うので油断できない。
はっはっは(笑い事じゃないんだけど)


で、話を戻すと、WindowsのフォントはUnicode式に逆向き表示。
なぜ、この逆向きっぷりが普段だれにも気づかれないかというと、Windows APIを使う限りにおいて、なぜか

JIS X 208 WAVE DASH ←→ Unicode Full Width Tilda

という変換がされてるんですな。
ま、Unicode Specificationの表見ながら文字の意味とか考えずに、グリフが近いやつを選ぶとこうなりそうだ。

マイクロソフトがUnicode実装したときはまだ変換表とか公開されてないからUnicodeコンソーシアムの変換表とはこれに限らずいろいろと違う動きをする。
はっはっは(笑い事じゃないってば)


さて、ここまで説明すると何が起こっているのかもうわかっていただけたと思う。
EncodeはJIS X 208 WAVE DASHをUnicode WAVE DASHに変換する。Windowsではそれはチルダとは逆向きの波線に見えるが、Xで表示させるとチルダと同じ向きの波線に見える。
波線がタテマエである以上、どっちも間違ってないのだ。
コレデイイノダ!


・・・ってDANさん。元々の話はJIS X 212(補助漢字)のFull Width Tildaとは全然違う話をしているように見えますが?

結論も僕はちょっと違うと思っていて、Windows以外でもEncode::EUCJPMSを使っておけばどんなフォントでもチルダ形の形に見えてよくありまsん?
Yen problemと違って全角文字はプログラム言語等で特別な意味を持っていないので見た目優先でええんとちゃうかなー



P.S.
この原稿の初期バージョンではUnicode Specificatonの最新を持ってないのを規格書を個人で持ってるなんて変態だ。と書いていただが、よく考えたらUnicode3.0、JIS X 208、JIS X 212、JIS X 221とオウチにそろってる時点で自爆以外の何者でもないので、謹んで削除させていただいた。
はっはっは


予期せぬエラーのありすぎです
Unicodeは! 規格も実装も間違っているので! 大変なんだ! ランキング!