Upgrade to Pro — share decks privately, control downloads, hide ads and more …

全角チルダ問題

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 全角チルダ問題

全角チルダ問題

Avatar for tsuda.a

tsuda.a

July 05, 2014
Tweet

More Decks by tsuda.a

Other Decks in Programming

Transcript

  1. 参考) 確かめかた (Windows の場合) • 確かめたい文字をコピーします。 • WordPad を起動し、コピーした文字を貼り付けます。 •

    確かめたい文字を一文字選択し、ALT + X を押します。 • コード (UCS-4) が表示されます。 • U+301C が波ダッシュ • U+FF5E が全角チルダ
  2. ダッシュ(enダッシュ) /ハイフン/マイナスの違い • 1 – 5 (ダッシュ) 1 から 5

    • 1 – 5 (ハイフン) 1 の 5 • 1 – 5 (マイナス) 1 ひく 5 わけがわからん(汗 http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5 _(%E8%A8%98%E5%8F%B7)
  3. なんで? • Unicode の例示字形を載せる際に間違えたらしい(汗 • Windows XP 以前の 波ダッシュ(U+301C) はこの字形。

    • よって、波ダッシュを使用すると、今まで使っていた字形と違うもの が表示されることになってしまう。
  4. 対策? じゃあ波ダッシュ「〜」じゃなくて、全角チルダ「~」のほうを 使えばいいんじゃね? ↓ いいことに気が付いた! ウハwww 俺天才wwwww かくて Windows では

    波ダッシュ が U+FF5C (=全角チルダ) に… 状況を予想するに、字形は Unicode 仕様書に準拠する以上変更ができないのに対して、 ・Shift JIS の 波ダッシュ を Unicode の何に対応させるかとか、 ・”~” の字形に相当する記号を MS-IME で何を候補として出すのかは、 規格があるわけではないので、”~”を 全角チルダに充てるのが一番ストレスがなかった、ってことではないかと…
  5. かくてこういう関係が成り立つ Windows の場合 ASCII UTF SJIS 半角チルダ (0x7E) 全角チルダ (U+FF5E)

    波ダッシュ (0x8160) 半角 - SJIS全角 変換 半角 - UTF全角 変換 波ダッシュ (U+301C) 使わない SJIS全角 - UTF全角 変換
  6. でも本来的にはこうだよね 半角チルダ (0x7E) 全角チルダ (U+FF5E) 波ダッシュ (0x8160) SJIS全角 - UTF全角

    変換 半角 - UTF全角 変換 波ダッシュ (U+301C) 波ダッシュ同士が 対応するべき 必要?(汗 ASCII UTF SJIS SJIS全角 - UTF全角 変換 半角 - SJIS全角 変換
  7. • 処理系によって、変換方法が違う(汗 現実はこう Windows (CP932) の MAP 方法 Macとか? (ShiftJIS)

    の MAP 方法 UTF SJIS 全角チルダ (U+FF5E) 波ダッシュ (0x8160) 波ダッシュ (U+301C)
  8. 何が起こるか? • データベースのキャラクターが Shift JIS • フロントエンド(Webページとか) は UTF •

    Windows で入力した「~」はデータベースにどう記録されるのか? • iPad で入力した「~」はデータベースにどう記録されるのか? • 記録した文字を読みだして、それぞれの OS で表示させるとどうなる のか?
  9. 余談2) ダッシュは日本語? • ダッシュ記号は、一般句読点(General Punctuation)と呼ばれる U+2000~U+206F の領域にあります。 • 日本語のグループではありません。 •

    ちなみに ”横の線” な記号は、たとえば以下のものがあります。 (以下がすべてではない) - U+002D Hyphen-Minus ‐ U+2010 Hyphen - U+2011 Non-Breaking Hyphen ‐ U+2012 Figure Dash – U+2013 En Dash — U+2014 Em Dash ― U+2015 Horizontal Bar ー U+30FC Katakana-Hiragana Prolonged Sound Mark (長音記号) ─ U+2500 Box Drawings Light Horizontal (罫線) ━ U+2501 Box Drawings Heavy Horizontal (罫線) 一 U+4E00 いち
  10. 余談4) ¥記号とか • この手の問題は、波ダッシュやダッシュに限らず、その他にもいろい ろ出てきます。注意しましょう。 • ¥ 記号も同様です。 • 特に

    ¥ 記号は暗黙に変換されたりする場合があるので気を付けま しょう。 ¥ U+005C Reverse Solidus (Backslash) ¥ U+00A5 Yen Sign ¥ U+FFE5 Fullwidth Yen Sign