Linux での MySQL の文字化け問題の解決方法

Linux での MySQL の文字化け問題の解決方法

プロジェクトはサーバーと対話し、post を通じてサーバー側の jsp にアクセスし、jsp はサーバー側の mysql データベースにアクセスします。最終的に、クライアントに返される中国語のテキストは文字化けします。

プロセス全体では、エラーの原因として、ポスト エンコーディングが設定されていないかエンコーディングが一貫していない、JDBC に問題がある、Linux での mysql の初期エンコーディングに問題がある、という 3 つの理由が考えられます。

面倒なトラブルシューティングの後、最終的に問題は MySQL のエンコーディングの問題であることが判明しました。以下では、Linux で MySQL の中国語文字化けの問題を解決する方法について説明します。

まず、mysql コマンドライン モードに入り、mysql -uroot -p と入力して入力します。次に、 SHOW VARIABLES LIKE 'character_set_%';入力します。

表示内容が次のような場合:

+--------------------------+----------------------------------------------+
| 変数名 | 値 |
+--------------------------+----------------------------------------------+
| 文字セットクライアント | utf8 |
| 文字セット接続 | utf8 |
| 文字セットデータベース | utf8 |
| 文字セットファイルシステム | バイナリ |
| 文字セット結果 | utf8 |
| 文字セットサーバー | utf8 |
| 文字セットシステム | utf8 |
| 文字セットディレクトリ | /alidata/server/mysql-5.1.73/share/charsets/ |

変更は正しく行われ、MySQL のデフォルトの初期設定は utf8 ではなく latin1 になりました。

1 つの解決策は、テーブルのプロパティを utf8 に変更するか、テーブルの作成時に最後にDEFAULT CHARSET=utf8を追加することです。テーブルをutf8コードに設定します。このアプローチは失敗する可能性があります。

最も基本的な解決策は、MySQL 構成ファイルを開いて変更することです。 Linux の MySQL 設定ファイルの名前は my.cnf で、ディレクトリは /etc/my.cnf です。開いたら、次の手順に従います。

--[mysqld]タグの下に3行追加: default-character-set = utf8
文字セットサーバー = utf8
lower_case_table_names = 1 //テーブル名は大文字と小文字を区別しません(これはエンコードとは関係ありません)
--[mysql]タグの下に次の行を追加します: default-character-set = utf8
--[mysql.server]タグの下にdefault-character-set = utf8という行を追加します
--[mysqld_safe]タグの下にdefault-character-set = utf8という行を追加します
--[client]タグの下にdefault-character-set = utf8という行を追加します

上記のタグがすべて見つからなくても問題ありません。 MySQL コマンドラインを再度開き、 SHOW VARIABLES LIKE 'character_set_%';がまだ存在する場合は、MySQL コマンドラインで次のコマンドを実行します。

  • character_set_client = utf8 を設定します。
  • character_set_server = utf8 を設定します。
  • 文字セット接続を utf8 に設定します。
  • 文字セットデータベースを utf8 に設定します。
  • character_set_results = utf8 を設定します。
  • collat​​ion_connection を utf8_general_ci に設定します。
  • collat​​ion_database を utf8_general_ci に設定します。
  • collat​​ion_server = utf8_general_ci を設定します。

実行後、上記の show コマンドを再実行して目的の結果を取得します。

設定が完了したら、mysql を再起動する必要があります。再起動コマンドは /etc/init.d/mysqld restart です。

元のデータ テーブルを削除して再構築する必要があります。

ついに完成しました。

まとめ

1. /etc/my.cnf ファイルを変更し、次の行を追加します。

[クライアント]
# パイプ=
# ソケット=MYSQL
ポート=3306
デフォルトの文字セット=utf8
[mysql]
ビープ音なし
# デフォルトの文字セット=
デフォルトの文字セット=utf8
#サーバーセクション
# ----------------------------------------------------------------------
# 以下のオプションはMySQLサーバーによって読み込まれます。
# サーバーが正しくインストールされている場合(上記参照)は、次のように表示されます。 
# ファイル。
# サーバータイプ=3
[mysqld]
文字セットサーバー=utf8

2. mysql サービスを再起動します。

サービスmysqlを停止します。
サービスmysqlステータス;
サービスmysqlを開始します。
または、service mysql restart;

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • PHP で文字化けした中国語の文字を MySQL に書き込むためのサンプル ソリューション
  • MySQL 文字セットの文字化けとその解決方法
  • MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法
  • JDBC 接続 mysql の文字化けしたコード例外問題の処理の概要
  • JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明
  • MySQL データベースにおける中国語文字化け問題の詳細な説明
  • MySQLデータベース移行におけるデータ文字化けの問題を解決する

<<:  Linuxルートの初期値を設定する方法の簡単な分析

>>:  Vueはカウンターのシンプルな生成を実装します

推薦する

Linux スワップメモリ​​を拡張する方法

スワップ メモリとは、主に物理メモリが不足している場合に、システムがハード ディスク領域の一部をサー...

IE 8/Chrome/Firefox と互換性のあるコメント返信ポップアップマスク効果実装アイデア

平日はニュースに注目して、テンセントをよく閲覧しています。しかし、コメントへの返信はほとんど見られま...

CentOS 8.4 での Docker パッケージのオフラインインストールの問題について

使用する仮想マシンは、サーバー環境をシミュレートする CentOS 8.4 です。外部ネットワークに...

UTF-8 ファイルの Unicode 署名 BOM (バイト オーダー マーク) の問題

最近、UTF8 エンコードの中国語 Zen Cart Web サイトをデバッグしているときに奇妙な現...

JSアルバム画像の揺れと拡大表示効果のサンプルコード

前回の記事では、JS を使って簡単な揺れ効果を実現する方法を紹介しました。ご興味があればクリックして...

Mysql でよく使用される時間、日付、変換関数の概要

この記事では、主に実際のアプリケーションでよく使用されるMySQLの時刻と日付、および変換関数につい...

MySql インデックスを表示および最適化する方法

MySQL はハッシュ インデックスと Btree インデックスをサポートしています。 InnoDB...

ab ツールを使用してサーバー上で API ストレス テストを実行します。

目次1 システムスループットの簡単な紹介2 試験方法2.1 クライアントテストツール2.1.1 GE...

JavaScript の navigator.userAgent がブラウザ情報を取得するケースの説明

ブラウザはおそらく私たちにとって最も馴染みのあるツールです。 Firefox、Opera、Safar...

入力ファイルの制御と美化について

一部のWebサイトでアップロードする場合、「参照」ボタンをクリックすると、[ファイルの選択]ダイアロ...

CSS でのシングル div 描画テクニックの実装

純粋な HTML + CSS を使ってドラえもんの絵を描くなど、CSS 描画に関する記事をよく見かけ...

Vueナンバープレート入力コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...

CentOS 6.8 に MySQL 8.0.18 をインストールするチュートリアルの簡単な分析 (RPM 方式)

今日は、CentOS 6.8 サーバーに MySQL 8.0.18 をインストールする方法を記録しま...

jsはシングルクリックでテーブルを変更することを実装します

Pure jsは、参照用にワンクリックで編集可能なテーブル(トランスクリプトに似たもの)を実装してい...

Nginx のタイムドログカットの詳細な説明

序文デフォルトでは、Nginx ログはファイルに書き込まれます。各ドメインのログを区別するために、通...