文字コード順でのソートはやっぱだめだ
文字コード順でソートして表示しているところがあって、「第一グループ」「第二グループ」「第三グループ」というレコードを表示すると、「第一」「第三」「第二」という順で並んだ。
一応確認のためのプログラムを作って、
# -*- encoding: Windows-31J -*- ary = %w[一 二 三] puts "■Shift_JIS" ary.each do |moji| puts "#{moji} : #{[].tap{|a| moji.bytes.each{|b| a << b}}.join(" ")}" end puts "■UTF-8" ary.each do |moji| puts "#{moji} : #{[].tap{|a| moji.encode('UTF-8').bytes.each{|b| a << b}}.join(" ")}" end
実行してみたところ、
■Shift_JIS
一 : 136 234
二 : 147 241
三 : 142 79
■UTF-8
一 : 228 184 128
二 : 228 186 140
三 : 228 184 137
となった。
2つとも三が二より先になっていますね。
とはいえ、普通の人が見たら、バグじゃないか?って思いますよね。やっぱ文字コード順のソートはだめだと改めて強く思うのでありました。