ホームページ >バックエンド開発 >PHPチュートリアル >MySQLの中国語文字化け、phpmyadminの文字化け、phpの文字化けの原因と解決策をまとめます 1/3ページ。
文字化けの原因
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 つの側面があります。文字集合のサポートは、サーバー (サーバー)、データベース プール (データベース)、データベース テーブル( table) と connection(接続)。
システムの文字セットとソート設定を表示するには、次の 2 つのコマンドを使用できます:
mysql> SHOW VARIABLES LIKE 'character_set_%'; -------+------------------------------------------ -- -+
| 値 |
+---------------+----------- ---------------+
| 文字セット_クライアント | ラテン文字セット_データベース
| 文字セット_ファイルシステム | 文字セット_サーバー _sets_dir |
-------+------------------------------------- --------+
セット内の 8 行 (0.06 秒)
mysql> 'collation_%' のような変数を表示
+----------------- ---+------ ------------+
値 | ------------+
| ラテン 1_スウェーデン語_サーバー | -------+-----------------+
3 行セット (0.02 秒)
上にリスト 表示されている値はシステムのデフォルト値です。 latin1 のデフォルトの照合ルールは、latin1 のスウェーデン語のソート方法である latin1_swedish_ci です
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
and
# が作成されましたが、文字セットは定義されていません
default-character-set=latin1
次の値を変更するだけです。
ここで変更することはお勧めしません。デフォルト値がそのまま保持されます。
つまり、mysql の起動時にデフォルトの文字セットが指定されていない場合、この値は設定ファイルから継承されます。
この時点では、character_set_server新しいデータベースを作成するとき、
明示的に指定しない限り、このデータベースの文字セットはデフォルトでcharacter_set_serverに設定されます。データベースが選択されると、
character_set_databaseはこのデータベースのデフォルトの文字セットに設定されます。 ; in このデータベースにテーブルが作成されるとき、
テーブルのデフォルトの文字セットは、このデータベースのデフォルトの文字セットである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 秒)
現在の 1/3 ページ 123 次のページ
以上、MySQLの中国語文字化け、phpmyadminの文字化け、phpの文字化けの原因と解決策をまとめた1/3ページを、関連内容も含めて紹介しましたので、PHPに興味のある友人の参考になれば幸いです。チュートリアル。