'É'(E\xcc\x81
)と 'É'(\xc3\x89
)のコードポイントは異なります。それらは同じに見えますが、一致するかどうかテストすると結果は否定的です。純粋なbashでの文字列の正規化
Pythonは正規化できますが、unicodedata.normalize('NFC', 'É'.decode('utf-8')) == unicodedata.normalize('NFC', 'É'.decode('utf-8'))
はTrue
を返します。それはÉとして印刷されます。
質問:文字列を正規化する方法はありますか純粋なbash *?私はiconv
を見てきましたが、私が知っている限り、それはasciiに変換できますが、正規化はできません。
* GNUのbashのあなたが利用可能uconvを持っている場合、それはおそらく仕事やる、バージョン3.2.57(1)-release(x86_64版 - アップル-darwin14))
シェルの文字列処理は、設計上最小限です。 Unicodeの正規化は適合しないので、組み込みの場合は驚くでしょう。 – Jens
あなたは 'iconv'を「純粋なbash」と考えていますか? Pythonと同様に外部プログラムです。 – chepner
申し訳ありませんが、私はOS Xシェルからネイティブで入手可能です。 – user2243670