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 を使用してマイクロサービスをゼロから簡素化する例

推薦する

同じドメイン名を持つ Nginx プロキシのフロントエンドとバックエンドの分離プロジェクトの完全な手順

フロントエンド プロジェクトとバックエンド プロジェクトは分離されており、フロントエンドとバックエン...

Linux システムに Zookeeper サービスをインストールする方法

1. /usr/local/services/zookeeper フォルダを作成します。 mkdir...

Docker で Jenkins-2.249.3-1.1 をインストールする詳細な手順

目次1. Dockerをインストールする2. Jenkinsイメージファイルを取得する3. マウント...

Windows に Docker と docker-compose スイートをインストールするための詳細なチュートリアル

目次導入ダウンロードしてインストールする設定docker-composeをインストールする導入Doc...

MySQL インデックス データ構造の詳細な分析

目次概要インデックスデータ構造バイナリツリー赤黒木BツリーB+ツリーハッシュ索引InnoDB インデ...

UbuntuにCMakeをインストールするいくつかの方法の詳細な説明

CMakeをインストール sudo apt をインストール cmake この方法はインストールが簡単...

docker を使用してコード サーバーをデプロイする方法

画像をプルする # docker pull codercom/code-server # Docke...

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...

単一選択折りたたみメニュー機能を実現するCSS

前回の「最もシンプルなスイッチを実現するCSS」のように、HTML5とCSS3でほとんどの機能をすで...

HTML テーブルタグと関連する改行の問題の詳細な分析

テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...

Docker Consul コンテナ サービスの更新と見つかった問題の概要

目次1. コンテナサービスの更新とDockerコンサルの検出1. サービス登録と検出とは何ですか? ...

プレーヤー機能を実現するためのvue + element uiのサンプルコード

効果画像のない表示は単なる空虚な言葉です。 1. オーディオをベースにし、elementUI と組み...

docker-compose が遅すぎる場合の解決策の詳細な説明

解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...

mysql インストーラ コミュニティ 8.0.12.0 インストール グラフィック チュートリアル

このチュートリアルでは、参考のためにmysqlインストーラコミュニティ8.0.12.0のインストール...

Windows で virtualenv を使用して仮想環境を作成する方法 (2 つの方法)

オペレーティング システム: windows10_x64 Python バージョン: 3.6.8仮想...