タグ

ブックマーク / blog.tmtms.net (3)

  • MySQL で utf8 と utf8mb4 の混在で起きること - tmtms のメモ

    MySQLUTF-8 で使おうと思ってハマりがちなのは charset utf8 を指定してしまうことです。 MySQLUTF-8 には歴史的事情により utf8 と utf8mb4 の二つあります。 UTF-8 は1バイト〜4バイトで1文字が構成される文字コードですが、MySQL の utf8 は4バイト文字を扱うことができません。ハマりたくなければ utf8mb4 を使いましょう。 utf8 を使ってしまった場合に4バイト文字がどのように扱われるか、自分でもうろ覚えだったのでメモしておきます。 登録 接続が utf8mb4 でカラムが utf8mb4 あたりまえですが、そのまま登録されます。 mysql> insert into utf8mb4 (c) values ('美味しい🍣と🍺'); mysql> select * from utf8mb4; +--------

    MySQL で utf8 と utf8mb4 の混在で起きること - tmtms のメモ
  • UTF-8 のサニタイズ - tmtms のメモ

    UTF-8 文字列中に UTF-8 として正しくないコードが入っていた場合に、その文字を「?」などに置き換えたいことがあります。 たとえば MySQL に登録するときは不正な文字を消しとかないと、その文字以降すべて消えてしまいます。 mysql> insert into t (c) values (0x414243FF58595A); Query OK, 1 row affected, 1 warning (0.06 sec) Warning (Code 1366): Incorrect string value: '\xFFXYZ' for column 'c' at row 1 mysql> select * from t; +------+ | c | +------+ | ABC | +------+ 1 row in set (0.00 sec)ということで、Ruby では Ic

    UTF-8 のサニタイズ - tmtms のメモ
  • MySQL 5.5 の unicode collation で同一視される文字 - tmtms のメモ

    MySQL の collation について調べてたら、 今回の実験で、utf8_unicode_ciによる大文字-小文字や全角-半角の同一視に 関する動作はなんとなく分かりましたが、どの文字が同一視されるのかを記載した資料ってあるのだろうか? http://d.hatena.ne.jp/end0tknr/20100613/1276427626 という記事を見かけたので調べてみました。 MySQL の マニュアルによると UCA というアルゴリズムを使用しているようです。 MySQL implements the xxx_unicode_ci collations according to the Unicode Collation Algorithm (UCA) described at http://www.unicode.org/reports/tr10/. The collatio

    MySQL 5.5 の unicode collation で同一視される文字 - tmtms のメモ
  • 1