MySQL 怎样计算 GB2312 和 UTF-8 的字符串长度?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
CHAR_LENGTH 计算字符数,LENGTH 计算当前编码的字节数。要比较目标编码的字节,用 CONVERT 转到目标字符集后再计算,并先确认文本可以无损表示。
讲清原理
常见汉字在 GB2312 用两字节,在 UTF-8 常用字用三字节。混入英文、扩展汉字或表情后,按字节差反推汉字个数会出错。
例子与易错点
“中文A”有三个字符,UTF-8 占七字节,可表示为 GB2312 时占五字节。字符集转换不支持某字符时,应按实际错误和替换行为处理。
此样本在两个字符集中都能无损表示。
SELECT CHAR_LENGTH(_utf8mb4'中文A'), LENGTH(_utf8mb4'中文A'),
LENGTH(CONVERT(_utf8mb4'中文A' USING gb2312));
相关题 · 第 118 题、第 113 题
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。