mysql 編碼測試

來源:互聯網
上載者:User

標籤:

insert into t1(v1) values(‘cn中國‘);
select * from t1;

1、輸入gbk,互動latin1,資料庫latin1
insert,用戶端把gbk的輸入當成latin1來解釋,傳給服務,服務不需要轉碼,把gbk當成latin1存入資料庫,顯示亂碼。
select,服務不轉碼,返回給用戶端,用戶端latin1當成gbk解釋,顯示正確。
2、輸入gbk,互動latin1,資料庫gbk
insert 報錯:ERROR 1366 (HY000): Incorrect string value: ‘\xD6\xD0\xB9\xFA‘ for column ‘v1‘ at row 1
原因是:用戶端把gbk的輸入當成latin1來解釋,傳給服務,服務轉碼,把latin1轉化為gbk,出錯。
3、輸入gbk,互動latin1,資料庫utf8
和1一樣,這是因為utf8英文字元一個位元組,多位元組字元三個位元組。
4、輸入gbk,互動gbk,資料庫latin1
insert 報錯:ERROR 1366 (HY000): Incorrect string value: ‘\xD6\xD0\xB9\xFA‘ for column ‘v1‘ at row 1
原因是:用戶端把gbk的輸入當成gbk來解釋,傳給服務,服務把gbk轉化為latin1,轉化失敗。
5、輸入gbk,互動gbk,資料庫gbk
insert,用戶端把gbk的輸入當成gbk來解釋,傳給服務,服務不需要轉碼,直接存入資料庫,存入資料庫正常。
select,服務不轉碼,返回給用戶端,用戶端gbk當成gbk解釋,顯示正確。
6、輸入gbk,互動gbk,資料庫utf8
insert,用戶端把gbk的輸入當成gbk來解釋,傳給服務,服務把gbk轉成utf8,存入資料庫,存入資料庫正常。
select,服務把utf8轉成gbk,返回給用戶端,用戶端gbk當成gbk解釋,顯示正確。
7、輸入gbk,互動utf8,資料庫latin1
insert 報錯:ERROR 1366 (HY000): Incorrect string value: ‘\xD6\xD0\xB9\xFA‘ for column ‘v1‘ at row 1
原因是:用戶端把gbk的輸入當成utf8來解釋,解釋錯誤。
8、輸入gbk,互動utf8,資料庫gbk
同7
9、輸入gbk,互動utf8,資料庫utf8
同7

考慮下面的情況,輸入gbk,互動gbk,資料庫gbk,插入一條記錄,查詢回來正常。現在把互動改成utf8,會出現什麼問題?
mysql> select * from t1;
+--------+
| v1 |
+--------+
| cn中國 |
+--------+
1 row in set (0.00 sec)

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+----------+
| v1 |
+----------+
| cn涓浗 |
+----------+
1 row in set (0.00 sec)

這是因為把utf8的中國,當成gbk解釋,就是顯示涓浗,也就是說,他們對應的Id是一樣的。反過來,也是一樣,把gbk的涓浗當成utf8解釋,就是中國,如下:
mysql> insert into t1(v1) values(‘cn涓浗‘);
Query OK, 1 row affected (0.08 sec)

mysql> select * from t1;
+----------+
| v1 |
+----------+
| cn涓浗 |
| cn涓浗 |
+----------+
2 rows in set (0.00 sec)

mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+--------+
| v1 |
+--------+
| cn中國 |
| cn中國 |
+--------+
2 rows in set (0.00 sec)

mysql 編碼測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.