作者zxvc (修行)
看板Database
標題[問題] MySQL varchar length的問題
時間Tue Apr 21 23:19:17 2009
請問在MySQL不同版本對於varchar length的定義是不是不太相同?
比如說我在MySQL 4.1.22建了一個column Vegetarian varchar(1)。
我發現一個UTF-8的中文字元(如:葷)寫進去會發生truncation的情形。
我把"葷"貼到Notepad++,用十六進位去看,是3bytes。
我後來調整Vegetarian成varchar(2),還是被truncation。
調成varchar(3)後,果然成功了,"葷"正常寫入database。
但我之前另一台機器是用MySQL 6.0.4。也有一個column Vegetarian varchar(1)。
它卻可以正常存入UTF-8的"葷"。
如果我把它改成varchar(2),它就可以存:
兩個中文
一個中文、一個英文
兩個英文
讓人感覺MySQL 6.0.4的length的定義不是"有多少bytes",
而是"多少characters(不論character set)"。
但我看了MySQL 5.0與6.0說明書對varchar length的解譯都是"有多少bytes"!?
請問這是什麼問題?
--
西方三聖:
http://p8.p.pixnet.net/albums/userpics/8/3/553683/1193661731.jpg
《佛說阿彌陀經》
http://web.cc.ncu.edu.tw/~93501025/amtf.doc
十一面觀音咒:
http://file.buda.idv.tw/music/DBZFY04.mp3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.220.219
※ 編輯: zxvc 來自: 140.115.220.219 (04/22 00:02)
推 Xezzaosui:我印象中 5.x 也是算 chars 數啊 04/22 12:23
推 kylekai:你的 表格編碼是什麼?... 04/22 16:46
→ zxvc:樓上,都是utf8_general_ci。 04/23 07:31