“ TEXT”列中可以容纳多少个多字节字符?

use*_*265 3 mysql

根据文档(重点是我的):

TEXT [(M)] [CHARACTER SET charset_name] [COLLATE collat​​ion_name]

一个TEXT列,最大长度为65,535(216?1)个字符。如果该值包含多字节字符,则有效最大长度会更少。每个TEXT值使用2字节长的前缀存储,该前缀指示值中的字节数。

说一TEXT列可以存储65535 个字节会更准确吗?TEXT列中多字节字符的具体影响是什么?

这是我困惑的根源:

在MySQL 5,CHAR并且VARCHAR场被改变为使他们算的字符,而不是字节(例如,你能适应“??????”成VARCHAR(6))。难道TEXT领域得到同样的待遇,或者他们仍然算个字节?

Ste*_*tel 5

我的知识:utf-8中的字符最大为32位大(4字节)。

编辑:utf8在mysql中最大只有3字节大。utf8mb4最大为4字节大。

因此,只有最大字符的最坏情况:

utf8: 65535 / 3 = 21845
utf8mb4: 65535 / 4 = 16383,75 =~ 16383
Run Code Online (Sandbox Code Playgroud)

/sf/answers/667332711/

编辑2:

我用10.1.21-MariaDB测试了本地。测试字符utf-8:

1字节:a

2字节:ö

3字节:

4字节:

utf8: 21845 @3-Byte (?)
utf8mb4: 16386  @4-Byte ()
Run Code Online (Sandbox Code Playgroud)

屏幕截图:

本地测试

http://i.imgur.com/5dmRteL.png