ホームページ  >  記事  >  バックエンド開発  >  MySQL中国語文字化け、phpmyadmin文字化け、php文字化けの原因と解決策まとめ1/3ページ_PHPチュートリアル

MySQL中国語文字化け、phpmyadmin文字化け、php文字化けの原因と解決策まとめ1/3ページ_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:54:43976ブラウズ

文字化けの理由

MySQL 文字エンコーディングはバージョン 4.1 で導入され、複数の言語をサポートし、いくつかの機能は他のデータベース システムを超えています。

我们可以在MySQL Command Line Client 下输入如下命令查看mysql的字符集

mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     | 2      |
| dec8     | DEC West European           | dec8_swedish_ci     | 1      |
| cp850    | DOS West European           | cp850_general_ci    | 1      |
| hp8      | HP West European            | hp8_english_ci      | 1      |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    | 1      |
| latin1   | cp1252 West European        | latin1_swedish_ci   | 1      |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   | 1      |
| swe7     | 7bit Swedish                | swe7_swedish_ci     | 1      |
| ascii    | US ASCII                    | ascii_general_ci    | 1      |
| ujis     | EUC-JP Japanese             | ujis_japanese_ci    | 3      |
| sjis     | Shift-JIS Japanese          | sjis_japanese_ci    | 2      |
| hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   | 1      |
| tis620   | TIS620 Thai                 | tis620_thai_ci      | 1      |
| euckr    | EUC-KR Korean               | euckr_korean_ci     | 2      |
| koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    | 1      |
| gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   | 2      |
| greek    | ISO 8859-7 Greek            | greek_general_ci    | 1      |
| cp1250   | Windows Central European    | cp1250_general_ci   | 1      |
| gbk      | GBK Simplified Chinese      | gbk_chinese_ci      | 2      |
| ラテン5 | ISO 8859-9 トルコ語 | latin5_turkish_ci | 1 |
| armcii8 | ARMSCII-8 アルメニア語 | armcii8_general_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp866 | DOS ロシア語 | cp866_general_ci | 1 |
| keybcs2 | DOS Kamenicky チェコ語 - スロバキア語 | keybcs2_general_ci | 1 |
| マッセ | Mac 中央ヨーロッパ | macce_general_ci | 1 |
| マクロマン | Mac West European | マクロマン_ジェネラル_ci | 1 |
| cp852 | DOS 中央ヨーロッパ | cp852_general_ci | 1 |
| ラテン7 | ISO 8859-13 バルト海 | latin7_general_ci | 1 |
| cp1251 | Windows キリル文字 | cp1251_general_ci | 1 |
| cp1256 | Windows アラビア語 | cp1256_general_ci | 1 |
| cp1257 | Windows バルト海 | cp1257_general_ci | 1 |
| バイナリ | バイナリ擬似文字セット | バイナリ | 1 |
| geostd8 | GEOSTD8 グルジア語 | geostd8_general_ci | 1 |
| cp932 | Windows用SJIS日本語日本語| cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows 日本語 | eucjpms_japanese_ci | 3 |
+----------+----------------------------+---------- ----------+--------+
セット内の 36 行 (0.02 秒)

さらに多くの mysql の文字集知识可以参照本论坛的
http: //www.phpfans.net/bbs/viewt ... &extra=page%3D1
またはmysql官方の
http://dev.mysql.com/doc/refman/5.1/zh/charset.html

MySQL 4.1文字セットのサポート (文字セット サポート) には、文字セット (文字セット) と順序方式 (照合順序) の 2 つの側面があります。文字コレクションのサポートは、サーバー (サーバー)、データベース (データベース)、データの 4 つの階層に分類されます。テーブル(表)とコネクション(接続)。
システムの文字セットとソート設定を表示するには、次の 2 つのコマンドを使用できます:

mysql> SHOW VARIABLES LIKE 'character_set_%';
​​+---------------- - ---------+-------------------------------------- - ---+
| 値 |
+---------------+---------- - ---------------------------------+ 文字セット_クライアント | 文字セット_データベース | latin1 |。 -- ---------+ セット内の 8 行 (0.06 秒)

mysql> 'collat​​ion_%' のような変数を表示
+--------------- - ---+-------------------+
| 値 | ------+-------------------+
| ラテン 1_スウェーデン語_サーバー | - ------------------+-------------------+
3 行セット (0.02 秒)

上記の値はシステムのデフォルト値です。 latin1 のデフォルトの照合ルールは latin1_swedish_ci ですが、これは latin1 のスウェーデン語のソート方法です
なぜですか? mysql の歴史を辿れば簡単にわかります

1979 年にスウェーデンの企業 Tcx は次のことを考えました。高速マルチスレッド、マルチユーザー データベース システムを開発します。 Tcx は当初、mSQL と独自の高速な低レベル ルーチン (Indexed Sequential Access Method、ISAM) を使用してデータベース テーブルに接続することを考えていましたが、いくつかのテストを行った結果、mSQL はニーズを満たすほど高速かつ柔軟ではないと結論付けました。これにより、mSQL とほぼ同じ API インターフェイスを使用する、コネクタ データベースへの新しい SQL インターフェイスが作成されました。この API は、mSQL 用に作成されたサードパーティ コードを MySQL に移植しやすくするように設計されています。

もし mysql が中国で開発されたのであれば、中国語もデフォルトでエンコードされると思います

もちろん、mysql のデフォルトの文字セットを自分で変更することもできます
mysql 設定ドキュメント my.ini で、次の 2 つを見つけます文:

[mysql]

default-character-set=latin1



# が作成されましたが、文字セットは定義されていません
default-character-set=latin1

次の値を変更するだけです。

ここで変更することはお勧めしません。デフォルト値はそのまま保持されます
つまり、mysql の起動時にデフォルトの文字セットが指定されていない場合、この値は設定ファイルから継承されます。新しいデータベースを作成するとき、
明示的に指定しない限り、このデータベースの文字セットはデフォルトでcharacter_set_serverに設定されます。データベースが選択されると、
character_set_databaseはそのデフォルトの文字セットに設定されます。データベース; このデータベースにテーブルを作成するとき、
テーブルのデフォルトの文字セットは、このデータベースのデフォルトの文字セットであるcharacter_set_databaseに設定されます。
テーブルに列を設定する場合、明示的に指定しない限り、この列はデフォルトになります。文字セットは、テーブルのデフォルトの文字セットです。

この問題は、データベースが gbk エンコードされている場合に発生します。データベースにアクセスするときに文字セットが指定されていない場合、それは gbk です。
その後、この値はシステムの latin1 を継承するため、mysql の中国語コードが文字化けします。

コード化けの解決策

コード化けの問題を解決するには、まずデータベースで使用されているエンコーディングを把握する必要があります。指定しない場合、デフォルトは latin1 です。
最もよく使用する 3 つの文字セットは、gb2312、gbk、utf8 です。

では、データベースの文字セットを指定するにはどうすればよいでしょうか?以下もgbkの例です

【MySQLコマンドラインクライアントでデータベース作成】

mysql> CREATE TABLE `mysqlcode` (
-> `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
- > `content ` VARCHAR( 255 ) NOT NULL
-> ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
クエリは OK、影響を受ける行は 0、警告は 1 つあります (0.03 秒)

http://www.bkjia.com/PHPjc/318431.html

tru​​ehttp://www.bkjia.com/PHPjc/318431.html技術記事文字化けの原因は、MySQL の文字エンコーディングがバージョン 4.1 で導入され、複数の言語をサポートし、一部の機能が他のデータベース システムを超えていることです。 MySQLCommandLineClient の下に入力できます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。