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はカウンターのシンプルな生成を実装します

推薦する

Vueプロジェクトのフロントエンドを最適化およびパッケージ化するための必須のボーナスアイテム

目次序文1. ルーティングの遅延読み込み1. ルートの遅延読み込みが必要なのはなぜですか? 2. ル...

あなたをエキスパートに見せるための 13 個の JavaScript ワンライナー

目次1. ランダムなブール値( true / false )を取得する2. 指定された日付が営業日で...

Alibaba Cloud Centos7.3 インストール mysql5.7.18 rpm インストール チュートリアル

MariaDBをアンインストールするCentOS7 ではデフォルトで MySQL の代わりに Mar...

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

Ubuntu 20.04にvncserverをインストールする方法

Ubuntu 20.04は2020年4月に正式にリリースされました。本日、ミラーシステムを正式にイン...

CSS でよく発生する問題の整理 (ロゴのハッキング/コンテナの固定/画像の垂直方向の中央揃え)

1. IEブラウザモードハックロゴ1. CSSハックロゴコードをコピーコードは次のとおりです。 ie...

Dockerのクイックガイド

Docker は、安全で繰り返し可能な環境でソフトウェアを自動的にデプロイする方法を提供し、コンピュ...

JS 実用的なオブジェクト指向スネークゲームの例

目次考える1. 貪欲な蛇の効果画像2. スネークの分析2.1 ゲーム開始機能2.2 運動機能2.2....

HTML の順序なしリストタグと順序付きリストタグの使用例

1. 上部と下部のリストタグ: <dl>..</dl>:上dt下層dd: カ...

Nginx ロードバランシング/SSL 構成の実装

負荷分散とは何ですか?ドメイン名が複数の Web サーバーを指している場合は、nginx ロード バ...

JavaScriptは両端キューを実装する

この記事の例では、両端キューを実装するためのJavaScriptの具体的なコードを参考までに共有して...

HTMLファイルとは何ですか?HTMLファイルを開く方法

HTML は Hypertext Markup Language の略です。現在、ほとんどの Web...