LoginSignup
0
0

【🍣】文字コードにまつわるエトセトラ【🍺】

Posted at

はじめに

調べては忘れるを繰り返す彼ら(文字コード)のエトセトラについて
備忘録&アウトプットのため書き記します。

COLLATION(照合順序)

  • utf8mb4_general_ciとかはCOLLATION(照合順序)の一種
  • COLLATIONはどの文字とどの文字を同一に扱うかといった決まり事
  • ソート時の文字ごとの重みが照合順序によって変わり、順番も変わる。
  • 日本語を扱う際によく使用される照合順序はこの3つが多い。
    • utf8mb4_general_ci …英字の大文字小文字を区別しない。ほかは区別する。
    • utf8mb4_unicode_ci …英字の大文字小文字を区別しないし、半角全角も、ひらがなカタカナも区別しない
    • utf8mb4_bin …全部区別する。文字コードがすべて。
  • MySQL8.0 ではutf8mb4 のデフォルトの照合順序が utf8mb4_general_ci から utf8mb4_0900_as_ci に変更になった。
    参考記事

UTFとUnicode

わかりやすくざっくりまとめられているこちらの記事をさらに粗くまとめてみた。
・Unicode世界中の文字とそれに対する 数字を紐付けたデータベースみたいなイメージ
・Unicodeには【あ→3041】,【a→0061】みたいな感じで各文字にコード(コードポイント)が紐づいている
・UTF-8はこれらのコードポイントをパソコンに理解させるために符号に変換する役割を果たす(Unicodeのコードポイントをそのままパソコンに理解させるよりもUTF-8などによる符号を使う方がバイト削減できる。らしい)

utf8とutf8mb4とutf8mb3

  • utf8mb3は1文字で3バイト、utf8mb4は4バイトの文字を表現できる。
  • utf8mb3では1文字で4バイトを超えるような文字(🍣や🍺、𠮷など)が同じものとして扱われてしまう(寿司ビール問題という美味しそうな名前がついている)。
  • utf8mb3は公式からも非推奨と言われており、utf8mb4が推奨されている。
  • MySQLにutf8というcahrsetがあるがこれはutf8mb3が使われるので注意(utf8utf8mb3のエイリアスらしい)。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0