根据文档(重点是我的):
TEXT [(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
一个TEXT列,最大长度为65,535(216?1)个字符。如果该值包含多字节字符,则有效最大长度会更少。每个TEXT值使用2字节长的前缀存储,该前缀指示值中的字节数。
说一TEXT列可以存储65535 个字节会更准确吗?TEXT列中多字节字符的具体影响是什么?
这是我困惑的根源:
在MySQL 5,CHAR并且VARCHAR场被改变为使他们算的字符,而不是字节(例如,你能适应“??????”成VARCHAR(6))。难道TEXT领域得到同样的待遇,或者他们仍然算个字节?
我的知识: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)
编辑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
| 归档时间: |
|
| 查看次数: |
346 次 |
| 最近记录: |