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 はスクロール可能なポップアップウィンドウ効果を実装します

この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考...

MySQL-8.0.26 構成グラフィックチュートリアル

はじめに: 最近、会社のプロジェクトでデータベースのバージョンが変更されました。ここでは、MySQL...

Linux カーネル デバイス ドライバー 高度な文字デバイス ドライバーのメモ

/****************** * 高度な文字デバイス ドライバー ***********...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...

MySQLはconnect_by_isleaf MySQLメソッドまたはストアドプロシージャに似た機能を実装します

最近、特に異常なビジネス需要があり、テーブルがあります テーブル「デモ」を作成します( `id` i...

vue-router からのフロントエンドルーティングの 2 つの実装

目次モードパラメータハッシュ履歴ハッシュ履歴.push()ハッシュ履歴.replace()アドレスバ...

Zabbixリモートコマンド実行の詳細な例

目次1つ。環境二。予防三つ。例Zabbix トリガーがしきい値に達すると、アラート メッセージの送信...

マークアップ言語 - リスト

標準化されたデザインソリューション - マークアップ言語とスタイルマニュアルWeb 標準ソリューショ...

Web プロジェクトでの SQL インジェクションの防止

目次1. SQLインジェクションの概要2. SQLインジェクション攻撃の全体的な考え方SQLインジェ...

Docker に MySQL と MariaDB をインストールする方法

MySQLとMariaDBの関係MariaDB データベース管理システムは MySQL のブランチで...

ウェブページの HTML コード: スクロールテキストの作成

このセクションでは、Web ページ内のテキストをスクロールしたり、スクロール プロパティを制御できる...

CocosCreator で物理エンジン ジョイントを使用する方法

目次マウスジョイント マウスジョイント距離ジョイント距離ジョイントモータージョイント直動ジョイント変...

MySQLフィールド定義でnullを使用しない理由の分析

NULL が頻繁に使用されるのはなぜですか? (1)Javaのnull Java の NullPoi...

Centos7でポートを開く方法

CentOS7 のデフォルトのファイアウォールは iptables ではなく、firewalle で...

ユーザーはその理由を知る必要がある

証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...