Python casefold 的位置变化:搜索命中了,为什么原文高亮却多带了一个字符 为了忽略大小写,搜索模块先把原文和查询都做casefold,再拿命中的起止位置去截原文。英文测试正常,遇到Straße!却把末尾感叹号一起高亮。原因是大小写折叠可能改变码点数量:一个原文字符在搜索文本里可以占两个位置... yunqueblog/ 技术教程/ 2026-10-03/ 2 阅读
Python 数字字符判断:isdigit 已经通过,为什么 int 仍然不接受上标二 数量输入先通过 isdigit,再交给 int,上标二却在第二步报错。原因是“字符属于数字类别”和“整个字符串符合整数语法”回答不同问题。Unicode 还收录了分数、上标以及多种文字系统里的数字,三个常见判断方法的... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Unicode 片假名校验:长音符明明在词里,Script 为什么不认它 看起来属于一个词,不等于只有一种脚本属性给片假名输入框写正则时,很容易使用 Script=Katakana,再用加号要求一个或多个字符。单独测试“コ”能通过,换成“コーヒー”却失败。问题出在中间的长音符“ー”,也就是... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
JavaScript 字符串截断:length 数的是码元,界面需要的可能是字素 同一段文字为什么有三种长度昵称框显示四个视觉单位,程序却报告长度十;把它截到第二个位置,表情还可能变成缺损符号。原因在于 JavaScript 字符串使用 UTF 十六码元序列,length 与普通索引按码元工作。一... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite NOCASE 的边界:英文能忽略大小写,带重音字母为何仍不同 一组英文测试通过,还不能说明所有名称都适用给名称列加上 COLLATE NOCASE 后,Alice 与 ALICE 能匹配,容易让人以为数据库已经实现通用的不区分大小写。继续放入带重音字母的名称,却可能发现大写和小... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python Unicode 规范化:看起来一样的文字,为什么比较不相等 从网页复制的名字与数据库里的名字看起来一致,等号却返回假,未必是编码损坏。有些文字能用一个预组合码点表示,也能用基础字母加组合符号表示。Python 字符串比较检查码点序列,不会替你决定这些形式是否应视作同一个业务名... yunqueblog/ 技术教程/ 2026-10-01/ 4 阅读