OS間による全角チルダ記号「~」の文字コードの違い
カテゴリ:アプリ開発
記事の種類:ハマったこと
全角半角変換機では全角と半角の記号も相互変換できます。しかし、全角記号の中には見た目は同じ記号でもOS間で異なる文字コードを使用しているものがあります。
例えば「~」(「から」で変換できる)記号は、半角では「~」(チルダ)に対応するのですが、WindowsとMac(macOS、iOS)、Linux(Ubuntu)では以下のようにUnicodeの文字コードが異なります。
OS | 記号 | Unicode |
---|---|---|
Windows | ~ | U+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