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

推薦する

MySQLデータベースパラダイムの詳細な説明

序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...

Kylin V10 サーバーで Storm をコンパイルしてインストールする詳細なプロセス

1 はじめにApache Storm は、Hadoop と同様に、大量のデータを処理するために使用で...

1 つの記事で MySQL のプリコンパイルを理解する

1. プリコンパイルの利点私たちは皆、プリコンパイル機能を備えた JDBC の PreparedSt...

CentOS7 で MySQL のスケジュールされた自動バックアップを実装する方法

実稼働環境で起こる最も嬉しいことは、シナリオによっては、更新または削除時にパラメータを無視せざるを得...

MySQL サーバーの接続、切断、および cmd 操作

mysql コマンドを使用して MySQL サーバーに接続します。 MySQL サーバーが起動したら...

CSSでフレックス配置を表示する(レイアウトツール)

display: flex レイアウトに関しては、深く理解している人もいますし、私も他の人の作業か...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

MySQL query_cache_type パラメータと使用方法の詳細

MySQL クエリ キャッシュを設定する目的は次のとおりです。クエリ結果をキャッシュしておくと、次回...

VMware に Centos8 をインストールする詳細なチュートリアル

CentOS公式サイトアドレスhttps://www.centos.org/まず必要なファイルをダウ...

RocketMQ の Docker インストールとインストール中に発生した問題の解決策

目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...

Nginx がフロントエンド リソースへのクロスドメイン アクセスの問題をどのように解決するかの詳細な説明

フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...

Dockerコンテナのログ分析

コンテナログを表示するまず、 docker run -it --rm -d -p 80:80 ngi...

設定操作からMySQLへのNULLが見つからない問題を解決する

興味深い発見:合計 1000 件のレコードを含むテーブルがあります。クエリ ステートメントは次のよう...

Vue における ref と $refs の紹介と使用例

序文JavaScript では、document.querySelector("#demo...