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 をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Centos7 esxi6.7 テンプレートの実際のアプリケーションの詳細な説明
目次典型的なウォーターフォールウェブサイトウォーターフォールフローレイアウトの原則一般的な考え方具体...
nginx パニック問題に関しては、まず nginx の起動プロセス中に、マスター プロセスが構成フ...
この記事では、Linuxサーバー上でDockerを使用してNexusプライベートサーバーを構築する方...
1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...
「初心者向けソースコードからの MySQL デッドロック問題の理解」では、MySQL ソースコードを...
結果: 実装コード: スワイパーコンポーネントと一緒に使用する必要がありますSwiper 基本デモア...
CSS3 では、transform 関数を使用して、テキストや画像の回転、拡大縮小、傾斜、移動という...
前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...
目次イメージの作成ファイル構造Dockerファイルエントリポイント関数ファイルを生成するイメージを構...
コンピュータ システムが再インストールされ、侵入テスト学習環境 DVWA を再インストールする必要が...
Vueのコントロール商品数量コンポーネントのカプセル化と使用は参考までに。具体的な内容は以下のとお...
1. サーバーの購入1. 私はAlibaba Cloudのサーバーを選択しました。学生向けで月額9...
序文Ubuntu 18.04 LTS で IP アドレスを設定する方法は、これまで使用されていた設定...
目次序文Lua スクリプトnignx.conf の設定Dockerfileの設定序文データベースやそ...
influxDB の紹介influxDB は分散型時系列データベースです。 cAdvisor はリ...