その他
    ホーム 技術発信 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正規化を参照

    記事を共有