MySQL の文字セット utf8 を utf8mb4 に変更する方法

MySQL の文字セット utf8 を utf8mb4 に変更する方法

MySQL 5.5 の場合、文字セットが設定されていない場合、MySQL のデフォルトの文字セットは latin1 ラテン文字セットになります。

しかし、さまざまなビジネスのさらなる発展に伴い、さまざまな国の母国語の文字に加えて、いくつかの絵文字がアプリケーションに頻繁に登場しています。MySQL 5.5より前のUTF-8エンコーディングは1〜3バイトのみをサポートし、BMP部分のUnicodeエンコーディング領域をサポートしていましたが、MySQL 5.5からは4バイトのUTFエンコーディングutf8mb4をサポートできるようになりました。1つの文字でより多くの文字セットとより多くの絵文字をサポートできます。

utf8mb4 は utf8 と互換性があり、utf8 よりも多くの文字を表現できます。これは utf8 文字セットのスーパーセットです。そのため、ISO などの一部の新しいビジネスでは、MySQL データベースの文字セットを utf8mb4 に設定します。

今日、アプリケーション要件を処理しているときに、次のような問題に遭遇しました。

もちろん、クライアント側でMySQLデータベースの文字セットをutf8mb4に変更するのが最も良い調整方法ですが、これには多くの変更が伴い、クライアントの一部をutf8に変更し、一部をutf8mb4に変更すると混乱が生じる可能性があります。

いくつかのテストの後、MySQL データベースの my.cnf の文字セット構成が次の構成に変更されました。

[クライアント] 
デフォルトの文字セット=utf8mb4 
 
[mysqld] 
文字セットサーバー = utf8mb4 
照合サーバー = utf8mb4_unicode_ci 
init_connect = '名前をutf8mb4に設定' 
文字セットクライアントハンドシェイクをスキップ = true 
 
[mysql] 
デフォルトの文字セット = utf8mb4

MySQL 文字セットの使用に関する推奨事項

• データベース/テーブルを作成し、データベース操作を実行するときは、MySQL のデフォルト設定に頼るのではなく、使用する文字セットを明示的に指定するようにしてください。そうしないと、MySQL をアップグレードするときに大きな問題が発生する可能性があります。

• データベースと接続文字セットの両方が latin1 を使用すると、ほとんどの場合、文字化けは解決されますが、文字単位で SQL 操作を実行できないという欠点があります。一般的には、データベースと接続文字セットの両方を utf8 に設定する方がよいでしょう。

• mysql C API を使用する場合は、データベース ハンドルを初期化した直後に、mysql_options を使用して MYSQL_SET_CHARSET_NAME 属性を utf8 に設定します。この方法では、SET NAMES ステートメントで接続文字セットを明示的に指定する必要はなく、mysql_ping を使用して切断された長い接続に再接続すると、接続文字セットも utf8 にリセットされます。

• MySQL PHP API の場合、ページレベルの PHP プログラムの合計実行時間は一般的に短くなります。データベースに接続した後、SET NAMES ステートメントを使用して接続文字セットを 1 回明示的に設定できます。ただし、長い接続を使用する場合は、必ず接続を開いたままにして、切断して再接続した後に SET NAMES ステートメントを使用して接続文字セットを明示的にリセットしてください。

MySQL における utf8 と utf8mb4 の違いについての包括的な理解: https://www.jb51.net/article/90037.htm

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • Linux システムで MySQL の文字セットを UTF8 に変更する手順
  • MySQL での utf8mb4 照合の例
  • MySQL エンコーディング utf8 および utf8mb4 utf8mb4_unicode_ci および utf8mb4_general_ci
  • MySQL データベースのエンコーディングを utf8mb4 に変更する方法
  • mysql charset=utf8 本当に意味が分かりますか
  • mysql 文字化けした文字 latin1 文字を UTF8 に変換 詳細

<<:  Centos7 esxi6.7 テンプレートの実際のアプリケーションの詳細な説明

>>:  WeChatアプレットがシンプルな計算機機能を実装

推薦する

MySQL カーソルの原理と使用例の分析

この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...

WeChatアプレットがシンプルな計算機機能を実装

WeChatアプレット:シンプルな計算機、参考までに、具体的な内容は次のとおりです。ミニプログラムに...

Centos8 で Apache httpd2.4.37 を使用して Web サーバーをインストールする詳細な手順

ステップ 1: yum install httpd -y #httpd サービスをインストールします...

jsで照明スイッチを制御する

参考までに、jsを使用して照明スイッチを制御します。具体的な内容は次のとおりです。トピック: js ...

Linux でプロセスを効果的に管理するための 8 つのコマンド

序文プロセス管理の役割:サーバーの健全性状態を判定する: プロセスの状態 (メモリ、CPU 占有率な...

HTMLを使用してシンプルなメールテンプレートを作成する

今日は、「ローテク」の問題について書きたいと思います。ちなみに、私は JavaScript Week...

mysql 簡単な操作例を表示

この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...

CSS シャドウ効果の比較: ドロップシャドウとボックスシャドウ

Drop-shadow と box-shadow はどちらも影効果(ハロー効果)のための CSS プ...

Linux で 1 回限りのスケジュールされたタスクを実行するための at コマンドの使用に関する詳細な説明

目次序文1. 一度限りの計画タスクの紹介2. コマンド3. 1回限りのスケジュールタスクを作成する4...

MySQL 作成ルーチン権限に関する注意事項

1. ユーザーにルーチン作成権限がある場合は、プロシージャ | 関数を作成できます。 2. ユーザー...

CSS3 アニメーション – ステップ機能の説明

最近、CSS3 アニメーションのソース コードの実装をいくつか見ていたところ、CSS コード アニメ...

echarts ワードクラウドチャートを使用した Vue の実践記録

echartsワードクラウドはechartsの拡張版ですhttps://echarts.apache...

JSON.parse と JSON.stringify の使い方の詳細な説明

目次JSON.パースJSON.parse 構文リバイバーパラメータJSON.parse の機能その他...

全画面ページのスクロール効果を実現するJavaScript

JavaScript DOM を読み終えた後、解釈型 JavaScript スクリプト言語に対する...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...