ホームページ >データベース >mysql チュートリアル >SQLコマンドクエリの文字化けの解決方法を詳しく解説

SQLコマンドクエリの文字化けの解決方法を詳しく解説

韦小宝
韦小宝オリジナル
2018-03-14 15:52:368394ブラウズ

SQLコマンドクエリのコード化けの解決策がわからない場合、またはSQLコマンドクエリ
のコード化けの解決策に興味がある場合は、この記事で説明します。 SQL コマンド クエリについて見てみましょう。この記事では、くだらない話はやめて本題に入りましょう



MySQL コマンド ライン クエリの文字化けの解決策:



その理由MySQL で中国語が文字化けする原因は、次のとおりです。クライアントプログラム (php など) の接続言語設定の問題

utf8 を使用することを強くお勧めします。utf8 は世界中のすべての文字と互換性があります

ステップ 1: mysql がインストールされているディレクトリを見つけて、my.ini ファイルを見つけます;

ステップ 2: メモ帳を使用して my.ini ファイルを開きます。

この場所を見つけて、default-character-set が utf8 であるかどうかを確認します。そうでない場合は、utf8 に変更してください。 (以前のバージョンにはこの文が含まれていない可能性があり、直接追加するだけです!)

port=3306

ステップ 3: mysql データベースに入力しますcmd: show variables like'%char%';

ステップ 4: 元のデータベースのエンコード方式を変更します:





# MySQL クライアント ライブラリの初期化。

[クライアント]

[mysql]

デフォルト-文字-set=utf8# MySQL client library initialization.

[client]

port=3306

[mysql]

default-character-set=utf8

setcharacter_set_client=gb2312;

1

2

3

4

set character_set_database=utf8;set character_set_database=utf8;

set character_set_server=utf8;

set character_set_client=gb2312;

set character_set_connection=gb2312;

set character_set_server=utf8;
set character_set_connection=gb2312;🎜🎜🎜🎜🎜

ステップ 5: エンコード方法を変更しました:

ステップ 6: クエリ結果を表示します:

ステップ 6: 中国語データを挿入してみます。わかりました!挿入できるんですね!

ステップ 7: テーブルから * を選択するときの文字化けを解決します。実際には、4 番目と 7 番目の部分のみが使用されます。

setcharacter_set_results=gb2312; と変更します。 !

GBK、GB2312、UTF8について

UTF-8: Unicode変換フォーマット-8ビット、BOMは許可されていますが、通常はBOMは含まれません。これは、国際文字を解決するために使用されるマルチバイト エンコーディングであり、英語の場合は 8 ビット (つまり 1 バイト)、中国語の場合は 24 ビット (3 バイト) を使用します。 UTF-8 には、世界中のすべての国で使用されている文字が含まれており、高い汎用性を持っています。 UTF-8 でエンコードされたテキストは、UTF8
文字セット
をサポートするさまざまな国のブラウザで表示できます。たとえば、UTF8 エンコーディングであれば、外国人の英語版 IE でも中国語を表示でき、IE の中国語サポート パッケージをダウンロードする必要がありません。 GBK は、国家標準 GB2312 をベースとし、GB2312 と互換性を持たせるために拡張された規格です。 GBK のテキスト エンコーディングは 2 バイトで表されます。つまり、中国語と英語の文字は両方とも 2 バイトで表され、中国語の文字を区別するために最上位ビットが 1 に設定されます。 GBK にはすべての中国語の文字が含まれており、各国のエンコーディングです。UTF8 よりも汎用性が劣りますが、UTF8 は GBD よりも大きなデータベースを占有します。

GBK、GB2312 などは、Unicode エンコードを通じて UTF8 に変換する必要があります:

GBK, GB2312--Unicode--UTF8

UTF8--Unicode--GBK, GB2312

Web サイトまたはフォーラムの場合、多数ある場合英語の文字の場合は、スペースを節約するために UTF-8 を使用することをお勧めします。ただし、多くのフォーラム プラグインは現在、一般に GBK のみをサポートしています。

GB2312はGBKのサブセットであり、GBKはGB18030のサブセットです

GBKは中国語、日本語、韓国語の文字を含む大きな文字セットです

中国語のWebサイトの場合、GB2312 GBKにはまだいくつかの問題があることをお勧めします
すべての
コード文字化け問題
を回避するには、UTF-8 を使用する必要があります。将来的には国際化をサポートするのに非常に便利です UTF-8 は、ほとんどのテキストのエンコーディングが含まれる大きな文字セットとみなすことができます。 UTF-8 を使用する利点の 1 つは、他の地域 (香港や台湾など) のユーザーが、簡体字中国語サポートをインストールしなくても、文字化けせずにテキストを通常どおりに表示できることです。

gb2312は簡体字中国語のコードです

gbkは簡体字中国語と繁体字中国語をサポートします

big5は繁体字中国語をサポートします
utf-8はほぼすべての文字をサポートします

まず文字化けの状況を分析します

MySQLに関係するいくつかの文字セット

character-set-server/default-character-set: デフォルトで使用されるサーバー文字セット。
character-set-database: データベースの文字セット。
character-set-table: データベーステーブルの文字セット。
優先度は順次増加します。したがって、通常の状況では、character-set-server のみを設定する必要があり、データベースおよびテーブルの作成時にキャラクタ セットを指定する必要はありません。このようにして、character-set-server キャラクタ セットが一律に使用されます。 character-set-client: クライアントの文字セット。クライアントのデフォルトの文字セット。クライアントがサーバーにリクエストを送信すると、リクエストはこの文字セットでエンコードされます。 character-set-results: 結果の文字セット。サーバーが結果または情報をクライアントに返すとき、結果はこの文字セットでエンコードされます。
クライアント側では、character-set-results が定義されていない場合、character-set-client 文字セットがデフォルトの文字セットとして使用されます。したがって、設定する必要があるのは、character-set-client 文字セットのみです。

中国語を処理するには、character-set-serverとcharacter-set-clientの両方をGB2312に設定できます。複数の言語を同時に処理したい場合は、UTF8に設定します。

MySQLの中国語問題について

コード化けを解決する方法は、SQL文を実行する前に、MySQLの以下の3つのシステムパラメータをサーバーの文字セットcharacter-set-serverと同じ文字セットに設定することです。

character_set_client: クライアントの文字セット。

character_set_results: 結果の文字セット。
character_set_connection: 接続文字セット。
ステートメントを MySQL に送信して、次の 3 つのシステム パラメーターを設定します: set names gb2312


上記がこの記事のすべての内容です。詳しくない場合でも、両方を自分で実装でき、簡単です。マスターへ!



関連する推奨事項:
SQLクエリ配列でinを使用する方法

データベースコードによるデータベースのロックを防ぐためのSQLクエリ高速化のヒント

複雑なクエリのためのMySQLクエリステートメント

以上がSQLコマンドクエリの文字化けの解決方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。