• ブログTOP
  • AI・ディープラーニング
  • AR
  • VR
  • WEBサイト
  • WEBマーケティング
  • SEO
  • SNS
  • その他
  • お問い合わせ

ALAKI株式会社

COZIKEEいつまでも使えるTech情報発信ブログ

リクルートサイトはこちら >

絵文字をMySQLに保存する時に気をつけるべき1つのこと

2017年3月3日

  • このエントリーをはてなブックマークに追加

こんばんは、Webプログラマの篠田です。

日の出が少しずつ早くなってきて、早起きが少しずつしやすくなりますが、まだまだ布団の魔力は強く勢いがないとなかなか出られずに苦戦しています。

今日は、あまり意識をしない絵文字とMySQLとの関係についてご紹介します。

この記事の目次

  • 1 普段通りにMySQLに絵文字を保存するとバグる
  • 2 バグの実態
  • 3 バグの原因
  • 4 解決方法
  • 5 実行するときの文字コードも注意
  • 6 気になる文字コード変換に伴う文字化け
  • 7 まとめ

普段通りにMySQLに絵文字を保存するとバグる

多くの参考書や、Webサイトでも紹介されるのがMySQLで、「CREATE DATABASE」を実行するときは、文字コードを「utf-8(utf8_general_ci)」にするというのが、鉄則としてかかれています。

私も、基本的にデータベースを作成するときは「utf-8(utf8_general_ci)」で作成をします。

しかし、扱う文字列の中に「絵文字」が含まれる可能性があるときに、「utf-8(utf8_general_ci)」で作ったデータベース及びテーブルに、「絵文字」を保存すると盛大にバグが発生してしまいます。

バグの実態

「utf-8(utf8_general_ci)」で作成したテーブルに、「絵文字」を保存するとどうなるでしょうか。

答え「絵文字が書かれているまでの文字列しか保存されない!!」

つまり、すべての文字列を保存することができないという状況になります。

「utf-8(utf8_general_ci)」で作成したテーブルに対して、絵文字を「INSERT / UPDATE」すること自体にエラーは発生しないので、実際のデータを確認しないと気づかないという罠があります。

バグの原因

原因は、「絵文字」の文字コードにあります。

普段、取り扱う文字列は「1〜2バイト文字」なので、「utf-8(utf8_general_ci)」で問題なく扱えます。

しかし、「絵文字」は「4バイト文字」となり、「utf-8(utf8_general_ci)」の扱えるバイト数ではなく、登録ができないという事態になります。

解決方法

解決法は、「4バイト文字が扱える文字コードにする」です。

ここで登場するのが、「4バイト文字」を扱える「utf-8mb4」という文字コードを利用します。

注意が必要なのは、この文字コードが扱えるMySQLのバージョンは「5.5以上」になります。

データベースを「utf8mb4」対応する

既に作成済みのデータベースを「utf8mb4」対応するのは下記のSQLを実行します。

MySQL
1
ALTER DATABASE データベース名 DEFAULT CHARACTER SET utf8mb4;

新規に作成する場合は下記のSQLを実行します。

MySQL
1
CREATE DATABASE データベース名 DEFAULT CHARACTER SET utf8mb4;

テーブルを「utf8mb4」対応する

既に作成済みのテーブルを「utf8mb4」対応するのは下記のSQLを実行します。

MySQL
1
ALTER TABLE テーブル名 DEFAULT CHARACTER SET utf8mb4;

新規に作成する場合は下記のSQLを実行します。

MySQL
1
CREATE TABLE テーブル名(カラム設定) DEFAULT CHARACTER SET utf8mb4;

カラムを「utf8mb4」対応する

既に作成済みのカラムを「utf8mb4」対応するのは下記のSQLを実行します。

MySQL
1
ALTER TABLE テーブル名 MODIFY カラム名 型 CHARACTER SET utf8mb4 […];

実行するときの文字コードも注意

MySQLの各データベースやテーブルの文字コードを変更しても、実行するプログラム側の文字コードを変更しないと、意味がありません。

必ずPDO等で「mysql:dbname=データベース名;host=localhost;charset=utf8mb4」を実行して、MySQLの操作をしましょう。

気になる文字コード変換に伴う文字化け

通常、文字コードを途中で変更すると、既に登録済みの文字列が大変なことになる場合がありますが、「utf8mb4」は「utf8」の拡張にあたるので文字化けは、基本的に発生しません。

例外的に「ハハパパ問題」と「寿司=ビール問題」が発生するリスクがありますが、その件に関しては別の機会に、ご紹介したいと思います。

まとめ

最近は、TwitterもiPhoneなどの絵文字を扱えるようになり、ガラケー時代とは異なる絵文字習慣が定着してきています。

MySQLのバージョンもあがることで、こういった問題に対応していることを知っていくことで、開発力をアップしていきたいですね。

【PR】
ALAKIでは、PHP&MySQLを使ってのシステム開発に力を入れています!!
システム案件でお困りごとがありましたら、お気軽に下記までご連絡ください。お待ちしていますm(_ _)m

■Webシステムの詳しい内容
https://alaki.co.jp/service/system.html

  • ツイート
  • このエントリーをはてなブックマークに追加

You may also like...

  • 121d3c318e49862e82dcdf3bf16e4529_m

    Ajax処理を実装しよう!(サーバーサイド編)

    22 9月, 2017

  • 13993703_xxl

    twig30分クッキング-テンプレート(2)編-

    2 9月, 2016

  • 828d070c1e9b0e8c43a7f928c1098ea8_m

    Laravel5.6でテンプレートエンジン「Twig」を使えるようにしよう!

    27 8月, 2018

プログラマー募集
  • Next story Google Analyticsで時間帯別の数字を分析して、SNS投稿に役立てよう!
  • Previous story 広報戦略でお悩みの方へ!弊社が考える大学・専門学校に必要な広報戦略(2017年版)

弊社サービス

MONJI+ MUGHEN ALAKI クラウド型受発注システム さよなら過去のAR。WebARがイベント集客に革命を起こします。

運営会社

ALAKI株式会社 ALAKI株式会社採用サイト

人気の記事

  • alaki1462_A_businessman_who_works_logically_1da80a2e-c297-4911-bdd6-feba0ebf1357

    仕事術

    【書籍要約】数学的な仕事術大全

    4 11月, 2024

  • fv-main-img-min

    空間コンピューティング

    世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました

    22 6月, 2023

  • Virtual reality players isometric vector illustration. VR UI and navigation. Futuristic digital technology. Virtual screen. Mixed reality 3d concept. Person in VR headset. Web banner idea

    AR

    Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ

    6 6月, 2023

  • AWE

    未分類

    ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!

    26 5月, 2023

  • python-logo-master-v3-TM

    pyhotn / 業務効率化

    「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

    2 2月, 2023

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

アーカイブ

  • 2024年11月
  • 2023年6月
  • 2023年5月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年2月
  • 2021年12月
  • 2021年9月
  • 2021年7月
  • 2021年6月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年6月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2013年10月
  • 2013年9月

Facebook

お問い合わせ

お問い合わせ

人気の記事

  • 【書籍要約】数学的な仕事術大全
  • 世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました
  • Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ
  • ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!
  • 「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

検索

ALAKI株式会社 © 2025. All Rights Reserved.