这里定期分享科技、信息技术、商业、医学及人文资讯,每周日发布。欢迎投稿或推荐线索。
封面主题:春节
下周是春节假期。2021是辛丑牛年,鉴于拼过2020,不免俗气一点,预祝大家“牛转乾坤”牪犇𤛭。
本期新年主题本来写得很长,人物也是大名鼎鼎的史蒂芬·霍金。由于最后添加了上面一行文字,并且在句末包含了“牪犇𤛭”三个字祝大家很多牛,结果:𤛭后面的内容完全没有被存储。
这是一次数据库编码事故,源于MySQL数据库和数据连接都默认使用了“utf8”字符集,它不是真正支持四字节的UTF-8,造成数据丢失。
在MySQL里实现的utf8最长使用3个字节,也就是只支持到了 Unicode 中的基本多文本平面(U+0000至U+FFFF),包含了控制符、拉丁文,中、日、韩等绝大多数国际字符,但并不是所有,最常见的就算现在手机端常用的表情字符emoji和很多不常用的汉字,如 “𤛭” ,这些需要四个字节才能编码出来。
也就是说,MySQL的utf8不是真正的UTF-8,而是一个专有字符编码,然后用一个新的utf8mb4来表示UTF-8。“永远不要在MySQL中使用utf8,始终使用utf8mb4代替”(In MySQL, never use “utf8”. Use “utf8mb4”),软件工程师Adam Hooper说。
因此现已将数据库/表编码切换到utf8mb4_general_ci(也可以是更标准的utf8mb4_unicode_ci,主要区别在于前者速度快,后者排序精确),并将数据连接修改为utf8mb4,上述故障解除。
当我们把一个需要4字节UTF-8编码才能表示的字符存入utf8数据库的时候就会报错:ERROR 1366: Incorrect string value: '\xF0\x9D\x8C\x86' for column
。此时需要升级MySQL到5.6或更高版本,并且将表字符集切换至utf8mb4。
由于没有底稿,没有备份,不准备补写了。祝大家快乐,下期继续。
基本标题
这次事故中图片链接没有挂掉,因此下面简要回顾一下内容标题:
- 中欧国际工商学院校友推荐书单
- 史蒂芬·霍金
- 绿色建筑
- 浏览器扩展程序
- 如何成为成年人-Robert Kegan的成人发展理论
- 耐克首款免手提运动鞋
重要图片
春节
对于即将到来的春节,补写一点人文知识。
春节是以农历计算的华夏新年,是汉族四大传统节日(春节,清明,端午,中秋)之首。
在古中国,正月初一叫元旦;立春叫春节。1912年,孙中山宣布使用公历,把1月1日定为元旦。后来袁世凯改农历正月初一为春节。
至于干支纪年和生肖纪年(比如辛丑牛年),则有正月初一和立春两个时间点分界的说法。更有,在老黄历网上,生肖纪年分界点在立春日,而干支纪年分界点在正月初一日。据说,立春派源于命理学传统,非专业不证实。
公元2017年5月12日发布的《中华人民共和国国家标准GB/T33661—2017〈农历的编算和颁行〉》规定了干支纪年和生肖纪年起于正月初一。
因此,今天仍属庚子鼠年。
再次预祝大家“牛转乾坤”。
👍
「圆周率文化是个人站点,重点分享科技、商业、医学及人文资讯。
「圆周率文化得到中国汽车绞盘网的支持,深表感谢。中国汽车绞盘网业务始创于2001年,为越野车、清障车、消防车、军用车、特种车及工程应用等拖曳、救援场景提供手动绞盘、电动绞盘、液压绞盘和技术支持。