December 2, 2007
鼓勵此網誌:0
MySQL 4.1以後, 儲存字串類的資料時,是以"字"為單位來存放資料的,並非以byte來計算
如 . varchar(10) 或 char(10)
使用Big5編碼:
可放10個中文字(佔用 20byte)
或是10個英文字(佔用 10byte)
使用UTF-8編碼:
可放10個中文字(佔用 30byte)
或是10個英文字(佔用 10byte)
測試過程:
Big-5 編碼:
CREATE TABLE `test2` (`test2` VARCHAR( 10 ) CHARACTER SET big5 COLLATE big5_chinese_ci NOT NULL);
INSERT INTO `test2` VALUES ('測測測測測測測測測測');
INSERT INTO `test2` VALUES ('tttttttttt');
INSERT INTO `test2` VALUES ('1111111111');
SELECT test2,length(test2) FROM `test2`
得到:
UTF-8 編碼:
CREATE TABLE `test` (`test` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL);
INSERT INTO `test` VALUES ('測測測測測測測測測測');
INSERT INTO `test` VALUES ('tttttttttt');
INSERT INTO `test` VALUES ('1111111111');
SELECT test,length(test) FROM `test`
得到:
如 . varchar(10) 或 char(10)
使用Big5編碼:
可放10個中文字(佔用 20byte)
或是10個英文字(佔用 10byte)
使用UTF-8編碼:
可放10個中文字(佔用 30byte)
或是10個英文字(佔用 10byte)
測試過程:
Big-5 編碼:
CREATE TABLE `test2` (`test2` VARCHAR( 10 ) CHARACTER SET big5 COLLATE big5_chinese_ci NOT NULL);
INSERT INTO `test2` VALUES ('測測測測測測測測測測');
INSERT INTO `test2` VALUES ('tttttttttt');
INSERT INTO `test2` VALUES ('1111111111');
SELECT test2,length(test2) FROM `test2`
得到:
| test2 | length( test2 ) |
|---|---|
| 測測測測測測測測測測 | 20 |
| tttttttttt | 10 |
| 1111111111 | 10 |
UTF-8 編碼:
CREATE TABLE `test` (`test` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL);
INSERT INTO `test` VALUES ('測測測測測測測測測測');
INSERT INTO `test` VALUES ('tttttttttt');
INSERT INTO `test` VALUES ('1111111111');
SELECT test,length(test) FROM `test`
得到:
| test | length( test ) |
|---|---|
| 測測測測測測測測測測 | 30 |
| tttttttttt | 10 |
| 1111111111 | 10 |



