ホーム DoRuby Unicode正規化 norm_KCとnorm_KDの注意点

Unicode正規化 norm_KCとnorm_KDの注意点

この記事はアピリッツの技術ブログ「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」になってしまう。

inputNFD,NFCNFKD,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+2033U+2033′′U+2032 U+2032分+分
U+2103摂氏度記号U+2103摂氏度記号°CU+00B0 U+0043度+ラテン大文字C
U+222C二重積分記号U+222C二重積分記号∫∫U+222B U+222B積分記号+積分記号

Unicode正規化を参照

記事を共有

最近人気な記事