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を段階的に学ぶ方法についての簡単な説明

推薦する

JSはフロントエンドのページング効果を実現します

この記事の例では、フロントエンドのページング効果を実現するためのJSの具体的なコードを参考までに共有...

知っておくべき 25 の Vue のヒント

目次1. プロパティを型リストに制限する2. デフォルトのコンテンツと拡張ポイント3. ネストされた...

JS配列の一般的な方法とテクニックを学び、マスターになりましょう

目次splice() メソッドjoin() メソッド逆() メソッドevery() メソッド削減()...

MySQLクエリ最適化プロセスを理解する

目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...

jsはシンプルなショッピングカートモジュールを実装します

この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...

Vueでaxiosをカプセル化する方法

目次1. インストール1. はじめに3. インターフェースルートアドレス4. 使用例4.1 ダウンロ...

nginx を使用して同じドメイン名で複数の Vue プロジェクトをデプロイし、リバース プロキシを使用する方法

効果現在、プロジェクトは2つ(project1、project2)あり、nginxに付属するinde...

Vue+echarts でプログレスバーのヒストグラムを実現

この記事では、プログレスバーヒストグラムを実現するためのvue+echartsの具体的なコードを参考...

MySQL 変数宣言とストアド プロシージャの分析

変数の宣言グローバル変数の設定@a='新しい変数' を設定します。関数やストアドプロ...

MySQL のインデックスの原理とクエリの最適化の詳細な説明

目次1. はじめに1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 2...

LINUX ポートが占有されているかどうかを確認します

ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...

ウェブページの要素の検査とソースコードの表示の違いについて

Chrome ブラウザで Web ページを開くと、ページを右クリックすると 2 つの非常によく似たオ...

ブラウザの自動更新を実装するReactサンプルコード

目次フロントエンドルーティングとは何ですか?フロントエンドルーティングを実装するにはどうすればいいで...

Linux環境にMySQLデータベースをインストールする詳細なチュートリアル

1. データベースをインストールする1) yum -y install mysql-server (...

HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...