OS間による全角チルダ記号「~」の文字コードの違い

カテゴリ:アプリ開発

記事の種類:ハマったこと

全角半角変換機では全角と半角の記号も相互変換できます。

しかし、全角記号の中には見た目は同じ記号でもOS間で異なる文字コードを使用しているものがあります。

例えば「~」(「から」で変換できる)記号は、半角では「~」(チルダ)に対応するのですが、WindowsとMac(macOS、iOS)、Linux(Ubuntu)では以下のようにUnicodeの文字コードが異なります。

OS記号Unicode
WindowsU+FF5E
Mac(macOS、iOS)U+301C
Linux(Ubuntu)U+301C

WindowsはU+FF5E(全角チルダ)ですが、Mac、UbuntuではU+301C(波ダッシュ)を使用しています。見た目は変わりませんが、実際には違う文字を表示しているのです。

そのため、「~」記号の半角への変換は、全角チルダと波ダッシュの両方に対応させています。具体的には変換前に波ダッシュ(U+301C)はすべて全角チルダ(U+FF5E)に変換しています。併せてハイフン問題にも対処しています。

    // 波ダッシュ(〜)とハイフン(−)問題の対処
    str = str.replace(/\u301c/g, '\uff5e')
        .replace(/\u2212/g, '\uff0d');

参考以下の記事を参考にさせていただきました。
javascript encodeURIComponentのハイフンと波ダッシュ文字化け問題の回避策

ちなみに「~」の全角記号への変換はOSシェアの大きいWindowsの「~」記号(全角チルダ)への変換に統一しています。

公開日時:2024年10月14日 09:30:08
最終更新日時:2024年10月14日 10:48:14

アプリ開発に戻る

このページのトップに戻る