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の子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

推薦する

MySQL 集計関数のソート

目次MySQL 結果のソート - 集計関数環境クエリ結果の並べ替えクエリのグループ化と集約生徒の平均...

IDEA は Docker プラグインを使用します (初心者向けチュートリアル)

目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...

Hタグの定義と注意事項について簡単に説明します

結果から判断すると、タイトルを定義するための固定パターンはなく、すべてむしろランダムな感じがします。...

CentOS での Docker の詳細なインストール チュートリアル

DockerにはCEとEEがあり、CE版はコミュニティ版(無料)、EE版はセキュリティを重視したエン...

Ant Design Blazor コンポーネントライブラリのルーティング再利用マルチタブ機能

最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...

HTML テーブル マークアップ チュートリアル (28): セルの境界線の色属性 BORDERCOLOR

テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...

KVM 仮想マシンのオンライン ホット マイグレーションを実装する方法 (画像とテキスト)

1. KVM仮想マシンの移行方法と注意すべき点KVM 仮想マシンを移行する方法は 2 つあります。...

MySQLの使い方の詳細な説明

目次1. はじめに2. 本文2.1 Where句の位置2.2 演算子2.3 NULL値1. はじめに...

Dockerにelasticsearchとkibanaをインストールする方法

Elasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを知らないと軽蔑...

html mailto(メール)の実用化について

ご存知のとおり、mailto は Web デザインと制作において非常に実用的な HTML タグです。...

jQueryは検証コード送信のコントロールボタンを無効にする機能を実装します

必要な効果: 確認コードを送信するためにクリックした後、ボタンは無効になり、5 秒後に無効解除されま...

Ubuntu 18.04はルート権限を取得し、ルートユーザーとしてログインします

事前に書いておきます:次の手順では、ターミナルにコマンドを入力する必要があります。コンピューターでブ...

背景とリンクとして画像を書き込む方法(背景画像+リンク)

写真を背景にしてリンクを記載します。たとえば、ウェブサイトのロゴ画像などです。例: ポテトのロゴ画像...

Linuxのバージョン情報を復号化する方法

Linux バージョンに関する情報を表示および解釈するのは、見た目よりも少し複雑です。単純なバージョ...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...