波ダッシュ、全角チルダ問題まとめ

More than 3 years have passed since last update.


そもそも、波ダッシュと、全角チルダって?


波ダッシュ 〜


  • 0x8160(Shift_JIS)

  • 0x301C(UTF-8)

  • WAVE DASH(ユニコードポイント : U+301C)

日本語の文字


  • 範囲を表す : 大阪 〜 東京 など

  • 省略記号 : 〜 からの


全角チルダ ~


  • Shift_JIS には無い

  • 0xFF5E(UTF-8)

  • FULLWIDTH TILDE(ユニコードポイント : U+FF5E)

いろんな意味がある文字


  • アルファベットの上につけて、鼻音を表す : ñ

  • 数学記号 (ほぼ等しいの意味)

  • ホームディレクトリを表す記号 : ~/download


Unicode 側での波ダッシュ割り当てミス

Shift_JISの波ダッシュ を Unicode に割り当てるときに、

波ダッシュの形を間違えて、"下がって上がる" ように表記してしまった

※ unicode 8.0 で修正されました

UnicodeのWAVE DASH例示字形が、25年ぶりに修正された理由 -INTERNET Watch

Windows XP 以前の環境 では、それにしたがって波ダッシュを表示している為、他の環境と表示が異なる


Windows XP 以前の環境での、それぞれの表記


  • 波ダッシュ 0x301C(UTF-8) : 正しくない

  • 全角チルダ 0xFF5E(UTF-8) : 正しい


Windows XP 以前の環境 だと、波ダッシュの意味で全角チルダが使われる

波ダッシュを入力しようと「から」を変換すると、全角チルダが出力される


  • 勘違いなのか、上記間違いで見た目が意図したものと異なるのを回避したかったのか...不明


波ダッシュ(0x8160) を UTF-8 に変換すると、CP932と、Shift_JIS で変換結果が異なる実装がある


  • いろんな実装毎に結構まちまちなのが問題

  • このため、Shift_JIS と、UTF8を行ったり来たりする環境だと、途中で、波ダッシュが、全角チルダに変わったり、全角チルダを Shift_JIS で解釈しようとして、存在しない文字扱いになったりする

  • 例えば、HTML の文字コードが Shift_JIS で内部の環境が、UTF-8 の web サービスとか


参考 : iconv の 変換ルール

元の文字コード
変換前の文字
変換後の文字

CP932
波ダッシュ(0x8160)
全角チルダ(0xFF5E)

Shift_JIS
波ダッシュ(0x8160)
波ダッシュ(0x301C)

多分だけど、Windows 環境で 全角チルダ が 波ダッシュ として扱われていることを考慮している


参考