2015年3月23日月曜日

PostgreSQLは寿司ビール問題を解決する(unicode 6問題について)

TwitterでMySQL と寿司ビール問題ってのが話題になりました。

MySQLと寿司ビール問題

結論から言うとMySQLでは指定されてた文字コードによっては



ってなる話です。
詳細については前述のブログで触れられていますがMySQLとしてはバグではなく仕様だそうです。
でふーんって思って見てたら



と長谷川さんが仰ってるのを拝見したのでPostgreSQLで試して見ました。
結論は表題のとおりですが次のとおりです。
なお、僕が一番苦しんだunicode 6な文字がWindows上で文字化ける問題はpgadmin3のフォント指定で行けました。
教えてくれた@snagaさんありがとうございます!!!

■pgadmin3のフォント指定(絵文字を表示出来るように変更)のやり方

1 ツールバーから次を選択
ファイル→ツール→オプションを選択

2 オプションメニューでフォントを指定
クエリーツール→フォントで「Segoe UI Symbol」を指定

これで絵文字が表示されます。

それではお待たせしました結果ですが次のとおりです。

●実行環境
OS:ubuntu 14.04
DB:PostgreSQL 9.3.5



ちゃんと別々に認識してますね。
なお、検証した環境のPostgreSQLのlocale指定はC(nolocale)としています。
(日本語を扱う場合はほとんどの場合はCを指定するでしょうし)
なのでsortした際はasciiを元にsortされます。

※localeについての補足
引用元[ロケール(国際化と地域化)]
Cロケールではエンコーディングに依存する文字のバイナリ値を元に並び順を決めますが、日本語ロケールでは辞書順(カタカナ→ひらがな, 清音→濁音→半濁音) の順にソートされています。

なのでasciiを使って確認すると


となっています。
以上のことから絵文字を扱うならPostgreSQLを使うと良いですね!!

0 件のコメント:

コメントを投稿