MySQLと文字コードの話

C3f29a7ca84efe357c5a62029bfeb78e?s=47 nombom7
January 22, 2020
72

 MySQLと文字コードの話

C3f29a7ca84efe357c5a62029bfeb78e?s=128

nombom7

January 22, 2020
Tweet

Transcript

  1. MySQLと文字コードの話 ぼんばー

  2. 自己紹介

  3. ASP.NET(VB.NET)データベース ぼんばー Skill 工場向け生産制御システム開発会社(2017/04~) Work 28 Age 本名 自己紹介 @nom_bom

    野村 晃聖
  4. Laravelなんもわからん (DBならなんとか。。。)

  5. という訳で DBの話をします

  6. 事前調査

  7. Laravel MySQL Laravel Postgres 日本 世界 直近1年間のGoogle検索数の推移

  8. Twitterのアンケート

  9. という訳で MySQLの話をします

  10. MySQLの文字コード

  11. MySQLには2種類の設定項目がある ・charset ・collation 文字コード 照合順序

  12. charset

  13. 文字集合 エンコーディング

  14. 文字集合 エンコーディング 規格 実装(符号化) charset JIS X 0208 JIS X

    0201 US-ASCII Shift-JIS EUC-JP Windows-31J sjis ujis cp938 複数の文字集合を組み合わせ MySQLの世界
  15. ごちゃごちゃしとる

  16. 救世主 Unicode

  17. Unicode 文字集合 エンコーディング UTF-8 UTF-16 規格 実装(符号化) … あまり使われない 文字集合の組み合わせ不要

    UTF-32
  18. Unicode(UTF-8)一択 色々あるけど ですよね?

  19. でも

  20. charset MySQLにはUTF-8のcharsetが2種類ある utf8 utf8mb4 1文字1~3バイト 1文字1~4バイト こっちが 常識!

  21. utf8mb4にしましょう 特に理由がなければ charset 絵文字も使えます

  22. collation

  23. collation どの文字を等しいとするか? ・大文字/小文字 ・濁音/半濁音/カナ ・絵文字 A:a は:ば:ぱ:ハ:バ:パ : ・拗音 や:ゃ

    コレーション;照合順序
  24. utf8mb4_unicode_ci charset 照合規則 _ci _cs Case Sensitive Case Insensitive 大文字/小文字を区別する

    大文字/小文字を区別しない collation 例)
  25. 照合規則 A:a : は:ば:ハ や:ゃ general_ci = = ≠ ≠

    bin ≠ ≠ ≠ ≠ unicode_ci = = = = unicode_520_ci = ≠ = = 引用元:Qiita記事「寿司ビール問題① 初心者→中級者へのSTEP20/25」
  26. Laravelの話

  27. ./config/database.php の初期値

  28. None
  29. collation A:a : は:ば:ハ や:ゃ general_ci = = ≠ ≠

    bin ≠ ≠ ≠ ≠ unicode_ci = = = = unicode_520_ci = ≠ = = これ
  30. 設定方法

  31. 'collation' => 'utf8mb4_bin', $table->collation = 'utf8mb4_bin’; $table-> string('columnName’)-> Collate(‘utf8mb4_bin’); ①

    ② ③ ./config/database.php ./database/migrations/[ファイル名].php DB TABLE カラム
  32. 目的に応じて適切な charset collation を設定しましょう

  33. ありがとうございました