mysql 字节 字符_字符与字节 | 字痕随行

我一直停留在很多年以前,还以为1个汉字顶2个英文,直到今天我把Javascript、Java、C#、MySQL全都试了一遍,才发现我一直停留在自己的幻想之中。

1. Javascript

14b817df704e10a4f08163eb95cd0efa.png

2. Java

7aebbe8f65ab645ce00605cfc6ceebea.png

3. C#

b2f1f27a70f58758186540e826e93e51.png

4. MySQL

54275574c1c637ea98441b231f7b1b70.png

JavaScript语言采用Unicode字符集,但是只支持一种编码方法,JavaScript用的是UCS-2。但是UTF-16取代了UCS-2,或者说UCS-2整合进了UTF-16。所以,现在只有UTF-16,没有UCS-2。“?”这个字的长度为4个字节,Javascript会把它看做是两个字符,所以它的字符长度会等于2。

Java虚拟机和C#(确切的说是.NET平台)使用Unicode来表示字符,一律使用2字节存储一个字符,“?”这个字的长度为4个字节,所以其字符长度等于2。

MySQL有点特殊,在5.5.3版本之前,它是不支持4字节的字符存储的,后来增加了Utf8mb4编码格式,用来处理4字节存储。不论这个字符的字节长度是多少,只要使用CHAR_LENGTH这个函数来计算,它的字符长度都是1。所以在定义varchar、char的长度时,其实就是定义字符的长度,而不是字节的长度。

参考资料如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值