Django で絵文字を登録できるようにする
2019/01/03 13:47
  • Django で絵文字を入力できるようにしたのでその時のまとめです。
    寿司食べたい…
    🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣
    🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
    🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺



    デフォルト文字コードを utf8 から utf8mb4 に変更する

    絵文字が登録できない理由は簡単で、ただ文字コードが対応していないだけです。
    utf8 --> utf8mb4 に変更してあげると絵文字も登録できるようになります。
    Django 的には settings.py の DB 設定のところに文字コードを指定することで新規テーブルを utf8mb4 で作成するようになります。


    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '',
            'USER': '',
            'PASSWORD': '',
            'HOST': 'localhost',
            'OPTIONS': {
                'charset': 'utf8mb4',
            }
        }
    }
    

    既存のテーブルを utf8mb4 に変更する

    次は既存のテーブルに対して文字コードの変更をかけます。

    インデックスの貼り方によっては MySQL のエラーが出るので max_length を変えるなり別途対応が必要となります。

    1071, 'Specified key was too long; max key length is 767 bytes'


    参考: https://qiita.com/shirakiya/items/71861325b2c8988979a2#5-1071-specified-key-was-too-long-max-key-length-is-767-bytes-を回避する

    僕の場合は特に問題がなかったため、さくっと全テーブルに対して alter table を投げました。

    alter table <テーブル名> convert to character set utf8mb4;
    


    これで絵文字が登録できるようになりました☺❗

    人気ブログランキングへ ブログランキング・にほんブログ村へ
    ↑応援よろしくお願いします!m(_ _)m

  • <2019/01/03 13:47>
  • サーバー
  • Django文字コードutf8utf8mb4MySQL絵文字
  • 新しい記事へ
    [2018-2019] 年末年始の成果発表

    古い記事へ
    2019 年の抱負など

profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。