概要
単純に違う文字になるので比較するときに注意しましょう
環境
- Ruby 3.0.2p107
文字の比較と確認
irb で16進数の文字コードを確認してみます
irb(main):021:0> "〜".bytes.map {|b| b.to_s(16)}
=> ["e3", "80", "9c"]
irb(main):022:0> "~".bytes.map {|b| b.to_s(16)}
=> ["ef", "bd", "9e"]
上が波ダッシュで下が全角チルダです
見た目は一緒ですが Unicode は違うので当然比較すると false になります
irb(main):023:0> "~" == "〜"
=> false
自分が遭遇したケース
特定のサイトから取得した文字は全角チルダだったのですがそれを別のサービスの API を使ってサーバに保存し再度 GET API で取得すると波ダッシュになっていました
おそらく保存しているサーバ側では全角チルダを扱わずにすべて波ダッシュに変換して保存しているせいだと思われます
他の文字でも変換して保存している可能性がありサービス的に保存されたくない文字は変換やエスケープされている可能性があるので取り出すときに注意しましょう
0 件のコメント:
コメントを投稿