世界中のさまざまな文字を符号化しているUnicodeには、さまざまな特徴があります。 その特徴の1つに結合文字があります。 たとえば、「が」は「か」を表すU+304bと濁点を表すU+3099を用いて、U+304b U+3099と表すことができるのです。 これ以外にも半濁点や、ドイツ語のウムラウトなども同じように結合文字で表すことができます。 「が」を表すU+304cと、「か」+濁点のU+304b U+3099を表示しても、外見上の違いはありません。問題は結合文字ともともとの文字を同じものとして扱えるかどうかということです。 このような結合文字はコードとしては同じではありませんが、文字の扱いとしては同じものとして扱うことができます。これを等価(Equivalance)といいます。特に結合文字などの合成列の場合、同一視することが可能です。このような文字を正規等価(Canonical Equiv
![「Java SE 6完全攻略」第56回 文字列の正規化](https://cdn-ak-scissors.b.st-hatena.com/image/square/bed39b5962a5d552c95b6d796db8f55e72d32943/height=288;version=1;width=512/https%3A%2F%2Fxtech.nikkei.com%2Fimages%2Fn%2Fxtech%2F2020%2Fogp_nikkeixtech_hexagon.jpg%3F20220512)