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

推薦する

CSSレイアウトで中央揃えレイアウトを実現する方法

1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...

Linux nslookup コマンドの使用方法の詳細な説明

[nslookup とは?] 】 nslookup コマンドは、Linux で非常によく使用されるネ...

VirtualBox仮想マシンがNATモードで外部ネットワークに接続できない問題の解決策

背景VirtualBox 仮想マシン (Ubuntu 16.04 システムがロードされている) には...

Xtrabackup を使用した MySQL バックアップ プロセスの詳細な説明

目次01 背景02 はじめに03 ワークフロー04 いくつかの質問05 ファイルをバックアップする0...

VMware 仮想マシンで HTTP サービスを確立して分析する手順

1. xshell を使用して仮想マシンに接続するか、仮想マシンに直接コマンドを入力します。以下はx...

RGBカラーテーブルコレクション

RGBカラーテーブル色英語名RGB 16色雪255 250 250 #FFFAFAゴーストホワイト2...

CSS 背景画像を設定するための 6 つの興味深いヒント

background-image は、おそらくすべてのフロントエンド開発者がキャリアの中で少なくとも...

ウェブページの画像を素早く表示する方法とテクニック

1. .jpg ではなく .gif を使用します。GIF は JPG に比べてサイズが小さくなります...

Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル

目次1. インストールの準備1. Linux関連情報の表示(Linuxコマンドライン操作) 2. M...

Vue プロジェクトのパッケージ化と最適化の実装手順

目次Vueプロジェクトのパッケージ化、起動、最適化Vueプロジェクトのパッケージ化プロジェクトホステ...

CSS中級者向けアダプティブレイアウトの5つのソリューションの詳細な説明

序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...

Vueリスナーの使用例の詳細な説明

1つ目はjQueryのajaxを使用してリクエストを送信することです ユーザーが登録するときに、リス...

フロントエンドの状態管理(パート 1)

目次1. フロントエンドの状態管理とは何ですか? 2. ヴュークス3. バス4. ウェブストレージ序...

HTML要素にフォーカスを設定する方法

コードをコピーコードは次のとおりです。 <本文<フォームアクション="&quo...

MySQL は対応するクライアント プロセスにどのように接続しますか?

質問特定の MySQL 接続について、それがどのクライアント プロセスからのものであるかをどのように...