MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

1. 問題

開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次のようなエラーが常に報告されます。

行 1 の列 'name' の文字列値が正しくありません: '\xE6\x88\x91'

2. 分析

1. まず、2 つのデータベース テーブルでこのフィールドの型を確認したところ、両方とも varchar であることがわかりました。そのため、型の不一致によって挿入エラーが発生する問題はありません。

2. フィールドタイプの不一致によるエラーを排除した後、中国語の文字化けの問題であると推測しました。その後、純粋な英語データを挿入したところ、エラーが発生しなかったため、中国語の文字化けの問題であると判断しました。その後、Baidu で検索したところ、中国語の文字化けは MySQL のデフォルトのエンコードの問題が原因であることがわかりました。

3. 解決策

1. ローカルの MySQL インストール ファイル ディレクトリにある my.ini 構成ファイルをチェックして、サーバーおよびクライアントのデフォルトのエンコーディングが utf8 であるかどうかを確認します。

[mysqld]
# サーバーが使用するデフォルトの文字セットは UTF8 です
文字セットサーバー=utf8

[クライアント]
# mysqlクライアントがサーバーに接続するために使用するデフォルトのポートを設定します。default-character-set=utf8

2. 前の手順が正しかったら、コマンド ラインを開き、 net start mysqlと入力して MySQL サービスを開始します。

「サービスが正常に開始されました」というメッセージが表示されたら、コマンド「mysql」を入力してデータベースを使用します。

show create table test.xtt_test_copy;

上図に示すように、デフォルトは「utf8」ではなく「latin1」であることがわかります。手動で変更を続ける必要があります。コマンド「 ALTER TABLE test.xtt_test_copy CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 」を入力し、コマンド「 show create table test.xtt_test_copy;

show creat database test;

上図に示すように、デフォルトは「utf8」ではなく「latin1」になっています。手動で変更を続ける必要があります。「 ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 」コマンドを入力し、続けて「 SHOW CREATE database test; 」コマンドを入力して、デフォルトのデータベーステーブルの文字セットエンコーディングが「utf8」に変更されていることを確認します。

3. 最後に、サービスを再起動します。

mysql> ネットストップmysql;
mysql> ネットスタートmysql;

MySQL を日常的に使用していると、中国語の文字化けに遭遇することがよくあります。普段の業務経験に基づいて、注意が必要な次の 4 つの点をまとめました。

1. MySQL 起動時の文字セットは、myini ファイルで default-character-set=character set を設定し、[WinMySQLadmin] の上に配置します。

2. データベース テーブルの作成時に、CREATE ステートメントの末尾にある CHARSET= 文字セット ステートメントで文字セットを設定します。

3. ドライバー URL のオプションで文字セットを設定します (jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=character set)。

4. Web 表示ページで表示される文字セットを設定します。<%@ page contentType="text/html; charset=character set" language="java" import="java.sql.*" errorPage="" %>サーブレットでは、response.setContentType("text/html; charset=character set"); です。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • 中国語の文字がMysqlに挿入されると完全な疑問符に変換される問題の解決策は?
  • 文字化けせずにMySQLに中国語の文字を挿入する5つの方法
  • MySQLが中国語の誤った文字列値を挿入できない問題を解決する
  • mysql は中国語の文字を挿入できません
  • Mysql 中国語の挿入と中国語のクエリ (変更 + デバッグ)
  • MySQLが中国語の文字を挿入する問題を永久に解決するコツを教えます

<<:  Nginx リバース プロキシでセッション永続性を実装する 2 つの方法の詳細な説明

>>:  JSを段階的に学ぶ方法についての簡単な説明

推薦する

Vueはプログレスバーの変更効果を実現します

この記事ではVueを使ってプログレスバーの変更を簡単に実装してみましたので参考にしてください。具体的...

mysql8.0.0 winx64.zip 解凍バージョンのインストールと設定のチュートリアル

この記事はmysql8.0.0 winx64.zip解凍版のインストールチュートリアルを記録していま...

この記事はJavaScriptの変数とデータ型を理解するのに役立ちます

目次序文:親切なヒント:変数1. 免責事項2. 譲渡3. 2つの小さな文法上の詳細変数の命名規則なぜ...

javascript:void(0) の意味と使用例

voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...

MySQLの7種類のログの概要

MySQL には次のログ ファイルがあります。 1: 再実行ログ2: ロールバックログ(元に戻すログ...

Mysql データベースの高度なビュー、トランザクション、インデックス、自己接続、ユーザー管理の例の分析の使用

この記事では、ビュー、トランザクション、インデックス、自己接続、ユーザー管理など、MySQL データ...

MySQLストアドプロシージャを変更する詳細な手順

序文実際の開発では、ビジネス要件が変更されることが多いため、ストアド プロシージャの特性を変更するこ...

要素の読み込み効果を実現するための純粋なHTML+CSS

これは Element UI の読み込みコンポーネントのエフェクトです。かっこいいですね。実装してみ...

MySQL スケジュールタスク例チュートリアル

序文MySQL 5.1.6 以降、非常にユニークな機能であるイベント スケジューラが追加されました。...

Vue における $router と $route の違いの詳細な説明

通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...

純粋なCSSを使用してスクロールシャドウ効果を実現します

端的に言うと、スクロール可能な要素には非常によくある状況があります。通常、スクロールすると、要素が現...

EChartsマルチチャート連携機能の実装プロセス

表示するデータが多い場合、1 つのチャートに表示しても効果はよくありません。このとき、2 つのチャー...

MySQL 5.7.18 MSI インストール グラフィック チュートリアル

この記事では、参考までにMySQL 5.7.18 MSIインストールチュートリアルを紹介します。具体...

コネクタコンポーネントから Tomcat のスレッドモデルを見る - BIO モード (推奨)

Tomcat の上位バージョンでは、デフォルト モードは NIO モードを使用することになります。...