MySQL で指定エンコーディングを実装する際の落とし穴について

MySQL で指定エンコーディングを実装する際の落とし穴について

前面に書かれた

環境: MySQL 5.7+、MySQL データベースの文字エンコードは utf8、テーブルも utf8

シナリオ: WeChat はユーザー情報 (ニックネームを含む) の取得を許可し、データベースに保存します。一部のユーザーは成功しますが、少数のユーザーは失敗します。

それで、なぜ失敗したのでしょうか?

エラーログを貼り付ける

行 1 の列 'nickname' の文字列値が正しくありません: '\xF0\x9F\x98\x98\xF0\x9F...'

これは、失敗したユーザーの WeChat ニックネームに絵文字記号が含まれているためです。

分析:

MySQL は、UTF-8、GB2312、GBK などの複数の文字エンコード セットをサポートしています。

SHOW CHARSET コマンドで表示できます。

通常、デフォルトの文字エンコードとして UTF-8 を使用することをお勧めします。

上の図から、MySQL データベースには 2 セットの UTF-8 エンコーディング実装があることがわかります。

  • utf8: utf8 エンコーディングは最大 3 バイトまでしかサポートしません。 UTF8 エンコードでは、中国語の文字は 3 バイトを占め、その他の英語の文字、数字、記号はすべて 1 バイトを占めます。ただし、絵文字記号は 4 バイトを占有し、一部の複雑なテキストや繁体字中国語の文字も 4 バイトを占有します。
  • utf8mb4: UTF-8 エンコーディングの完全な実装。最大 4 バイトをサポートしているため、絵文字記号の保存に使用できます。

情報、公式の説明を確認してください:

やっと

ヒント: 絵文字記号を保存する必要があるフィールドがある場合は、エンコードを utf8mb4 として指定することを忘れないでください。

MySQL 指定エンコーディングの実装における小さな落とし穴についての記事はこれで終わりです。MySQL 指定エンコーディングに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MYSQLストアドプロシージャコメントの詳細な説明
  • MySQL インデックス データ構造の詳細な分析
  • MySQL データベースの必須条件クエリ ステートメント
  • MySQLデータベースのタイムアウト設定を構成する方法の例
  • Mysqlサーバーのインストール、構成、起動、シャットダウン方法の詳細な説明

<<:  React スキャフォールディングの構築方法を学ぶ

>>:  Dapr を使用してマイクロサービスをゼロから簡素化する例

推薦する

iframe 適応サイズ実装コード

ページドメインの関係:メインページ a.html はドメイン A: www.jb51.net に属し...

レスポンシブWebデザイン学習(1) - 画面サイズと使用率の決定

最近では、モバイルデバイスがますます普及しており、ユーザーがスマートフォンやタブレットを使用して W...

MySQL 5.7.17 winx64 解凍版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.17 winx64解凍版のインストールと設定方法を紹介します。具体...

Linuxでmysqlの定期的なコールドバックアップを実装するためにmysqldump+expect+crontabを使用するアイデアの詳細な説明

目次1. 遭遇した問題2. アイデア3. コード1. 遭遇した問題私たちは皆、mysqldump を...

Apple 電卓の JS 実装

この記事の例では、Appleの電卓を実装するためのJSの具体的なコードを参考までに共有しています。具...

HTML CSS に基づく検索アイコン付き検索ボックス機能を実装する

序文フロントエンドで非常に便利な、小さなアイコン付きの検索ボックスを作成する方法をご紹介します。エフ...

MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...

Mysql ALTER TABLE はフィールドを追加するときにテーブルをロックしますか?

目次MySQL 5.6以前MySQL 5.6以降要約する知らせMySQL 5.6以前更新手順元のテー...

Kafka の Docker デプロイメントと Spring Kafka 実装

この記事は主にDockerによるKafkaのデプロイとSpring Kafkaの実装について紹介しま...

Dockerfile テキストファイルの使用例の分析

Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...

SNMP4J サーバー接続タイムアウト問題の解決策

弊社のネットワーク管理センターは管理センター兼サーバーとして機能します!各管理対象デバイスは、TCP...

MySQL 5.7.23 バージョンのインストールチュートリアルと設定方法

MySQL を自分でインストールするのに 3 時間かかりました。チュートリアルはたくさんあるにもかか...

Web ページ制作におけるテーブル属性 CellPad、CellSpace、Border の説明と使用

cellspacing は表内のセル間の距離です。セルパディングは、表のセル内の空白スペースです。一...

MySQL シリーズ: redo ログ、undo ログ、binlog の詳細な説明

取引の実施REDO ログはトランザクションの永続性を保証し、UNDO ログはトランザクションのロール...