| >>いくつかやってみましたが、eucjpmsにすれば >>半角カタカナ→ひらがな→全角カタカナ→漢字 >>になりますね。 > > UTF8 ならばわかるのですが SJIS でですか? > MySQL の DB が SJIS 設定でも内部コードとしては > UTF8 で処理しているというのならばわかります。
SJISの半角カナは1バイトで0xa0〜0xdf 2バイト文字は0x8140〜0x9ffc(記号全角かなカナ漢字第ニ水準の途中まで?)と0xe040〜0xfffc(残りの漢字) なので単純に文字コードで比較すれば半角カナは漢字の間に入る。猫→カナ→炬燵
桐の場合はSJISでなくJISで半角カナでも内部は2バイトだし(0x00a0〜)、「辞書順」というのもあるからデフォルトで同じにならないのはしょうがないですね。
> PostgreSQL でも DB を UTF8 に設定すれば「半角カナ」 > は後ろに来ます。 > > UTF8 の場合 > 0 1 A B a b ◆ あ ア イ 亜 K 0 1 ア イ > > EUC-JP の場合 > 0 1 A B a b ア イ K ◆ 0 1 ア イ 亜
そうか、EUC-JPだと漢字の順番がSJIS(JIS)とは違うのですね。 カナのためにこれを使うのは無理か...
|