MySQL UTF文本容量
我有一个名为“summary”的专栏(tinytext,utf8_turkish_ci)。我知道它可以存储255字节,也可以存储255个字符。但是如果我使用unicode字符,比如Ö,Ü存储容量自然会减少。如果我的访问者输入250个字符长的unicode文本,那么最后一个字符将被擦除。我的摘要列的长度将始终为250个字符。我能做什么?谢谢。您可以将其改为MySQL UTF文本容量,mysql,unicode,tinytext,Mysql,Unicode,Tinytext,我有一个名为“summary”的专栏(tinytext,utf8_turkish_ci)。我知道它可以存储255字节,也可以存储255个字符。但是如果我使用unicode字符,比如Ö,Ü存储容量自然会减少。如果我的访问者输入250个字符长的unicode文本,那么最后一个字符将被擦除。我的摘要列的长度将始终为250个字符。我能做什么?谢谢。您可以将其改为varchar。varchar的长度限制为指定的字符数。tinytext字段的长度限制为255字节。您可以将其改为varchar。varchar
varchar
。varchar
的长度限制为指定的字符数。tinytext
字段的长度限制为255字节。您可以将其改为varchar
。varchar
的长度限制为指定的字符数。tinytext
字段的长度限制为255字节。UTF-8是可变长度编码。一个字符可以被编码成1到4个字节(理论上限制为6,但我还没有遇到)。如果您只处理土耳其语,那么每个字符只需要2个字节。因此,您需要500字节的列大小来支持250个字符,因此您应该使用类似于varchar(500)
或text
的内容,UTF-8是可变长度编码。一个字符可以被编码成1到4个字节(理论上限制为6,但我还没有遇到)。如果您只处理土耳其语,那么每个字符只需要2个字节。因此,您需要500字节的列大小来支持250个字符,因此您应该使用类似varchar(500)
或text
的内容。另外注意:在MySQL 5中,Innodb只允许767字节的键,尽管不属于键的字段可能更长。由于OP使用utf8字符集,MySQL每个字符使用3个字节,因此键中的varchar
字段将限制为255.67个字符,这实际上意味着最多255个字符。由于OP只需要250个字符,这就足够了。另外一点需要注意的是:在MySQL 5中,Innodb只允许767字节的密钥,尽管不属于密钥的字段可能更长。由于OP使用utf8字符集,MySQL每个字符使用3个字节,因此键中的varchar
字段将限制为255.67个字符,这实际上意味着最多255个字符。由于OP只需要250个字符,这就足够了。