Cプログラムでは、有効なUTF-8エンコード文字列のリストをUnicodeコードポイント順にソートする必要があります。照合なし、ロケール認識なし。strcmpはコードポイント順でutf-8文字列を比較しますか?
だから私は比較機能が必要です。ユニコード文字を反復する関数を書くのは簡単です。 (私はGLibを使用することが起こるので、私はg_utf8_next_char
で反復し、g_utf8_next_char
の戻り値を比較したい)
しかし、私は思ったんだけど、好奇心、おそらくシンプルさと効率性の外に、ある単純なバイトは意志-for-byte strcmp
(またはg_strcmp
)は実際に同じ仕事をしていますか? UTF-8 encodesの最上位ビットが最初であり、N + 1バイトでエンコーディングが必要なコードポイントは、Nバイトでエンコードされる必要があるコードポイントよりも大きな初期バイトを持つため、これを行うべきだと考えています。
しかし、多分私は何かを欠いている?前もって感謝します。
ありがとうございます!私は、私のユースケースをフォローアップしようとしていましたが、警告が当てはまるとは思わないし、この情報が[標準](http://www.w3.org/TR/xml- c14n#DocumentOrder)私は実装しようとしています: "アルファベット順に文字列を並べ替えるレキシカル比較は、UTF-8に基づく辞書順に相当するUCSコードポイント値に基づいています。 ':-)' – skagedal