この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Unicode正規化 norm_KCとnorm_KDの注意点特殊な文字に対して、別文字になってしまいます。
例:
irb(main):004:0> query=”250℃”
=> “250℃
irb(main):005:0> q = query.downcase.to_u.norm_KC.to_s
=> “250\xC2\xB0C”
irb(main):006:0> q.force_encoding(“UTF-8”) if q.respond_to?(:force_encoding) => “250°C”
一文字「℃」は2文字「°C」になってしまう。
input | NFD,NFC | NFKD,NFKC |
---|---|---|
IDSPU+3000 和字間隔 | IDSPU+3000 和字間隔 | SPU+0020 スペース |
‥U+2025 二点リーダ | ‥U+2025 二点リーダ | ..U+002E U+002E ピリオド+ピリオド |
…U+2026 三点リーダ | …U+2026 三点リーダ | …U+002E U+002E U+002E ピリオド+ピリオド+ピリオド |
″U+2033 秒 | ″U+2033 秒 | ′′U+2032 U+2032 分+分 |
℃U+2103 摂氏度記号 | ℃U+2103 摂氏度記号 | °CU+00B0 U+0043 度+ラテン大文字C |
∬U+222C 二重積分記号 | ∬U+222C 二重積分記号 | ∫∫U+222B U+222B 積分記号+積分記号 |