MySQLの"UTF-8"にご用心

| コメント(0) | トラックバック(0)

拙著『プログラマのための文字コード技術入門』にも一言だけ書いたのですが、オープンソースのデータベース管理システムとして有名なMySQLのバージョン5.0とか5.1とかは、UTF-8として3バイトまでしか対応していません。

これは今どき考えられないくらい古い仕様です。3バイトのUTF-8というのは、Unicodeの基本多言語面(BMP) という、16ビット固定で世界中の文字を符号化するんだと(誤って)言い張っていた、古き良き時代のUnicodeの範囲しか扱えません。

MySQLの5.5.3というバージョンではようやく4バイトのUTF-8への対応が図られたようです。5.5.3の変更点を記したページに記されています。

これを使えば、魚の名前の𩸽(ほっけ、U+29E3D)だとか、偏旁の𧾷(足偏、U+27FB7)だとか、あるいは日本の地名として𣖔木作(ほうのきざく、福島県)の「𣖔」(U+23594)や𣗄代(たらのきだい、山形県)の「𣗄」(U+235C4)などといった、JIS X 0213に含まれる漢字がようやく扱えるようになります。一部の人が希望しているであろうIVSや(今後のバージョンのUnicodeに入る予定の)携帯絵文字に対応するにも4バイトのUTF-8は必要です。

ただし、文字コードの指定として、従来の "utf8" とは別に、"utf8mb4" という名前を持つ別の文字コードとして定義されているようなので注意が必要です。

ちなみに、同じくオープンソースのDBMSであるPostgreSQLは、既に4バイトのUTF-8に対応しています。それだけでなく、JIS X 0213の符号化方式のEUC-JIS-2004やShift_JIS-2004にも対応しています。

トラックバック(0)

トラックバックURL: http://yanok.net/yanok/mt-tb.cgi/116

コメントする

最近のブログ記事

LGの KF94マスクを買ってみた
マスクの重要性 デルタ株の感染力によって…
『[改訂新版] プログラマのための文字コード技術入門』増刷決定!
拙著『[改訂新版] プログラマのための文…
停電対策として自宅にUPSを導入した話
私は写真撮影が趣味で,撮影した写真は自宅…
Javaと Pythonの識別子の仕様を比較する
前の記事で,Pythonの識別子のUni…
Pythonの識別子における Unicode文字
プログラミング言語Pythonで,変数名…

広告