作者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)
1F:推 Xezzaosui:我印象中 5.x 也是算 chars 数啊 04/22 12:23
2F:推 kylekai:你的 表格编码是什麽?... 04/22 16:46
3F:→ zxvc:楼上,都是utf8_general_ci。 04/23 07:31