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

推薦する

HTML Webページ作成チュートリアル iframeタグを慎重に使用してください

iframe を使用すると、他の Web サイトのページを簡単に呼び出すことができますが、注意して使...

JS ES6コーディング標準の詳細な説明

目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...

例を通してBRタグとPタグの違いを理解する

<br />改行タグの使用<br>改行タグ<br>は終わりのない...

Ubuntu 20.04 デスクトップのインストールとルート権限の有効化および SSH インストールの詳細

記事は主にUbuntu 20.04の簡単なインストールプロセスを記録し、インストール後に国内ソースを...

NestJsはMongooseを使用してMongoDBを操作する

最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...

Docker Compose のサイドカーモードの詳細な説明

目次Docker Composeとは要件に不適切な言語が使用されている実装Docker Compos...

JavaScript継承のさまざまな方法とメリット・デメリットを詳しく解説

目次1. プロトタイプチェーン継承2. コンストラクタの借用(古典的な継承) 3. 組み合わせ継承4...

MySQL パーティション関数の詳細な説明と例の分析

まず、データベース パーティショニングとは何でしょうか?以前、MySQL のテーブル パーティショニ...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

Raspberry PiにDockerをインストールする方法

Raspberry Pi は ARM アーキテクチャをベースとしているため、Docker のインスト...

win10にUbuntu18デュアルシステムをインストールするとmmx64.efiが見つからないという問題が発生する

Ubuntu 18のインストール中に、USBディスクからUbuntuのインストールを開始すると、mm...

tbodyタグの魔法はテーブルコンテンツの表示を高速化します

他の人のウェブページを保存して見たことがあると思いますが、特にdwで開くと、多くのウェブページに&l...

HTTP および HTTP コラボレーション Web サーバー アクセス フロー図

Web サーバーは、独立したドメイン名を持つ複数の Web サイトを構築できるほか、通信経路上のトラ...

一般的な HBase 運用および保守ツール 10 個の概要

概要: HBase には、ユーザーに管理、分析、修復、デバッグ機能を提供するための多くの操作および保...

MySQLを5.7にアップグレードすると、WordPressはデータをインポートするときにエラー1067を報告します

最近MySQLを5.7にアップグレードしましたが、WordPressでデータのインポート時にエラーが...