MySQL データベースの文字化け問題の原因と解決策

MySQL データベースの文字化け問題の原因と解決策

序文

データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデータベースであっても、文字化けした文字が表示される場合は、データベースの文字セット設定に問題があることがほとんどです。

次に、データベースの文字セットの設定とコード文字化け問題の解決方法を紹介します。

MySQLデータベースの文字セット

簡単に言うと、文字は 1 つの単語、エンコーディングは各単語に割り当てられた番号、文字セットは文字とエンコーディングの集合、検証ルールは文字セットに対応するソートルールです。文字セットと対応する検証ルールの組み合わせが言語です。 (各文字セットには複数の照合順序を設定できますが、デフォルトの照合順序が存在します)

MySQL データベースは、文字セットを設定することで、対応する文字セットと検証ルールを使用して文字を整理できます。それは、その言語を使って記事を解釈するようなものです。たとえば、中国人がよく使用する utf8 エンコーディングは中国語を表します。

MySQL は複数の文字セットをサポートできます。同じデータベース内の異なるテーブルや、同じテーブル内の異なるフィールドでは、異なる文字セットを使用するように指定できます。

MySQL 文字セットルール

mysql が設定できる文字セットは次のとおりです。

  1. サーバーの文字セット
  2. データベースの文字セット
  3. 文字セット単語
  4. セグメント文字セット

文字セットがレベルで設定されていない場合は、その上のレベルの文字セットを継承します。

MySQL データベースの文字化け問題を解決する方法 (つまり、文字セットを変更する方法)

【1】MySQLでサポートされている文字セットを確認する

文字セットを表示します。

ここに写真の説明を記入してください

【2】データベースコードを確認する

'character_set%' のような変数を表示します。

ここに写真の説明を記入してください

【3】MySQLで現在使用されている文字セットを表示する

'character%' のような変数を表示します。

ここに写真の説明を記入してください

分析:

character_set_client: クライアント要求データの文字セット

character_set_connection: クライアントとサーバーの接続の文字セット

character_set_database: デフォルト データベースの文字セット。デフォルト データベースがない場合は、character_set_server で指定された文字セットが使用されます (勝手に変更しないことを推奨します)

character_set_filesystem: character_set_client を character_set_filesystem に変換します (デフォルトはバイナリで、変換は行われません)

character_set_results: クライアントに返される文字セット

character_set_server: データベースサーバーのデフォルトの文字セット

character_set_system: システム文字セット。デフォルトは utf8 です。 (カタログ テーブルに格納されているデータベース テーブル、列、関数の名前)

character_sets_dir: MySQL 文字セットファイルの保存パス

文字化けの原因

character_set_clientが実際のものと一致しません
character_set_results がクライアント ページと一致しません

【4】現在のデータベースの校正ルールを表示する

'collat​​ion%' のような変数を表示します。

ここに写真の説明を記入してください

分析:

値の命名規則: 文字セット名 + 言語 + 接尾辞

collat​​ion_connection : 現在の接続の文字セット

collat​​ion_database : 現在の日付のデフォルトの照合順序

collat​​ion_server : サーバーのデフォルトの照合順序

接尾辞の意味:
ci: 大文字と小文字を区別しない
cs: 大文字と小文字を区別する
bin: バイナリソート

【5】文字セットの変更

文字化けした問題を解決する(一般的には以下のとおり)

<1> 一時的(現時点でのみ有効で、終了して再度入ると元の設定に戻ります)

character_set_client = 'utf8' を設定します。
文字セット接続を 'utf8' に設定します。
character_set_results = 'utf8' を設定します。

または

名前をutf8に設定します。

<2>永続的(設定ファイルを変更した後、MySQLを再起動する必要があります)
mysql の my.cnf 構成ファイルに以下を変更または追加します。

[クライアント]
デフォルトの文字セット = utf8 

[mysqld]
文字セットサーバー = utf8 


[mysql]
デフォルトの文字セット = utf8

述べる

<1>
mysqld以下のパラメータについては、mysql5.5で検証した結果、以下の書き方はいずれも許容されており、アンダースコアによる変更の失敗もありません。

文字セットサーバー = utf8
文字セットサーバー = utf8

<2>
設定ファイルの変更に関しては、コンパイルやインストールにより、mysql 設定ファイルが必ずしも /etc/my.cnf ではない場合があり、変更が成功しないことがあります。

<3>
設定ファイルを変更したら、mysql を再起動します。文字セットと照合規則が次のとおりであるかどうかを確認してください。

以下は成功です。Navicat などのサードパーティツールを使用して接続すると、中国語の文字がまだ文字化けします。ツールのエンコードを変更してみてください。

ここに画像の説明を挿入

ここに画像の説明を挿入

これで、MySQL データベースの文字化け問題の原因と解決策に関するこの記事は終わりです。MySQL データベースの文字化けに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 文字セットの表示と変更のチュートリアル
  • MySQLの文字セットを変更する方法
  • MySQL の文字セット utf8 を utf8mb4 に変更する方法
  • 既存のMySQLデータベースの文字セットを統一する方法
  • MySQL 文字セットの文字化けとその解決方法
  • MySQL utf8mb4 文字セットの JDBC 処理の詳細な説明
  • フィールドの文字セットの違いによる MySQL のインデックス失敗の解決策
  • MAC で MySQL のデフォルトの文字セットを utf8 に変更する方法
  • Docker で MySQL の文字セットを設定する方法
  • MySQLクエリの文字セットの不一致の問題を解決する方法
  • MySQLの文字セットと検証ルールの詳細な説明

<<:  Linux 脆弱性スキャンツール lynis の使用分析

>>:  Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

推薦する

Vue ミックスインの詳しい説明

目次ローカルミックスイングローバル ミックスイン要約するローカルミックスイン <テンプレート&...

Windows で MySQL 5.6 を 5.7 にアップグレードする方法

前面に書かれたMySQL をアップグレードする方法には、インプレース アップグレードと論理アップグレ...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...

MySQL全文インデックスを使用して検索エンジンのサンプルコードの簡易版を実現する

序文全文インデックスを使用できるのは Innodb と MyISAM ストレージ エンジンのみです ...

Windows 10 + mysql 8.0.11 zipインストールチュートリアルの詳細

準備する: MySQL 8.0 Windows zip パッケージのダウンロード アドレス: htt...

Linux で AIDE に基づいてファイルシステムの整合性を検出する方法

1. 補助AIDE (Advanced Instruction Detection Environm...

Docker+DockerCompose を使用して Web アプリケーションをカプセル化する方法

目次テクノロジースタックバックエンドビルドAPIフロントエンドウェブ構築ゲートウェイ建設ゲートウェイ...

HTML テーブル マークアップ チュートリアル (9): セル間隔属性 CELLSPACING

テーブルがコンパクトになりすぎないように、テーブル内のセル間に一定の距離を設定できます。基本的な構文...

Vue axios インターセプターは、繰り返しリクエストのキャンセルによく使用されます。

導入前回の記事では、axios のシンプルなカプセル化と、axios インターセプターの適用シナリオ...

MySQLデータベースでサポートされているストレージエンジンの比較

目次ストレージエンジンMySQL でサポートされているストレージ エンジン同時実行制御ロック粒子をロ...

ReactにおけるRefの相互利用の詳細な説明

目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...

MySQL 5.7.17 のインストールと設定方法のグラフィックチュートリアル (Win7 の場合)

Windows 7 で MySQL 5.7.17 をインストールする方法についてのグラフィック チ...

Antd+vueは円形属性フォームの動的検証のアイデアを実現します

必要な項目をループして検証するために、クエリ フォームのいくつかのプロパティを実装したいと考えていま...

Docker Composeのデプロイと基本的な使い方の詳しい説明

1. Docker Composeの概要Compose は、マルチコンテナ Docker アプリケー...

MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。

マスタースレーブレプリケーションがなぜ必要なのでしょうか? 1. 複雑な業務システムでは、SQL 文...