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

推薦する

CSSアニメーションによるテーブルスクロールカルーセル効果の実装

前回の CSS 回転灯と同じ内容の CSS アニメーションの応用です。これは単なる別のアプリケーショ...

win2008R2 64 ビット システムでの mysql5.7.17 のインストールと構成の例

123WORDPRESS.COM では、さまざまな環境での MYSQL の他のバージョンのインストー...

mysqlタイムスタンプの使用

序文:タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変...

Zabbix ベースの Jenkins プロセス監視の詳細な説明

1. 監視アーキテクチャ図 2. 実装のアイデアJenkins に Metrics プラグインをイン...

Mysql WorkBench のインストールと設定のグラフィックチュートリアル

この記事では、Mysql WorkBenchのインストールと設定のグラフィックチュートリアルを参考ま...

MySQL は正常に起動するがポートをリッスンしない場合の解決策

問題の説明MySQL が正常に起動しました。以下に示すように、 ps -ef |grep mysql...

バックアップ データをインポートするときに innodb_index_stats がエラーを報告する場合の主キー競合の解決方法

障害の説明percona5.6、mysqldump フルバックアップ、バックアップデータのインポート...

MySQLデータベースの操作とメンテナンスのデータ復旧方法

これまでの 3 つの記事では、論理バックアップと物理バックアップを含む、MySQL データベースの一...

jQuery における Ajax の関連知識ポイントのまとめ

序文JavaScriptを学ぶ学生は、 AJAX (非同期JavaScriptとxml) 変換は非同...

MySQL データ型の最適化の原則

MySQL は多くのデータ型をサポートしており、高パフォーマンスを得るには適切なデータ型を選択するこ...

JS ES6コーディング標準の詳細な説明

目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...

HTML テーブルのオーバーフローの解決方法

テーブルが広い場合は、あふれてしまう可能性があります。たとえば、左と右の 2 つの div がありま...

mysql8.0.11 winx64 手動インストールと設定チュートリアル

まず、私の日常生活についてお話しします。MySQLの急速なアップデートにより、MySQLはバージョン...

CSS初心者向けチュートリアル: 背景画像を画面全体に表示する

インターフェース全体に背景画像を表示したい場合は、当然 body に背景を追加することを考えます。コ...

データベースを削除して逃げる?xtraback を使用して MySQL データベースをバックアップする方法

1. mysqldump バックアップ方法では論理バックアップが使用されます。最大の欠点は、バック...