波ダッシュ「〜」と全角チルダ「~」の違い
日本語の範囲、期間、長音のような表現に使われる「〜」と「~」は、フォントによってほとんど同じ形に見えます。しかし、Unicodeでは別の文字です。検索、データ照合、文字コード変換、ファイル名比較では同じ文字として扱われません。
| 表示 | コードポイント | Unicode名 |
|---|---|---|
〜 | U+301C | WAVE DASH |
~ | U+FF5E | FULLWIDTH TILDE |
~ | U+007E | TILDE |
なぜ文字化けや置き換わりが起きるのか
JIS、Shift_JIS、MicrosoftのCP932、Unicodeの間では、歴史的に波形記号の対応付けが一致しない場面があります。同じバイトをUnicodeへ変換しても、使用する変換表によってU+301CまたはU+FF5Eになることがあります。その結果、変換前後で文字が入れ替わったように見えたり、往復変換で元に戻らなかったりします。
ブラウザのWHATWG Encoding準拠shift_jisは、Web上で互換性を持たせるためWindows系の挙動を取り込みます。厳密なJISの話と、Windowsアプリケーションで実際に扱われるCP932の話を分けて考える必要があります。
実務で問題になりやすい場面
- CSVを基幹システムへ取り込む
- 異なるOS間でファイル名を比較する
- 商品名や住所を完全一致で検索する
- AI生成文を古いテキストエディタで保存する
- 正規表現やプログラムで記号を条件にする
安全な対応
受け取り側がUTF-8に対応するなら、文字を意図どおり選び、UTF-8のまま渡すのが基本です。CP932指定がある場合は、受け取り側が「〜」と「~」のどちらを想定しているかを確認してください。NFKC正規化は表記をまとめることがありますが、文章の意味やシステム仕様に合うとは限らないため、一律に実行しない方が安全です。
見た目では判定しない
コピーしてチェッカーへ貼り付けると、U+301CとU+FF5Eをコードポイント付きで区別できます。
参考資料
最終確認日:2026年7月23日