主要观点:在 epilot 的产品中为实体实现了搜索和过滤功能,用户大量使用,但出现了过滤包含变音符号(如元音变音、umlauts 等)的文件名的问题。深入研究逻辑后发现上传时文件名被微妙更改,存在背景编码转换,通过encodeURIComponent
发现不同编码形式导致搜索故障,罪魁祸首是 NFD 和 NFC 两种编码类型,在 MacOS 上是 NFD,在 Linux 上是 NFC,解决方法是在上传后保存文件为实体前应用.normalize()
确保文件名可统一搜索,还可编写迁移脚本来规范化所有现有非 ASCII 字符文件名,简单的字符串规范化在该案例中有效。
关键信息:用户大量使用搜索过滤功能,文件名编码问题导致搜索故障,不同系统的编码类型不同,解决办法是规范化文件名。
重要细节:如具体的编码形式%C3%BC
和%CC%88
,String.prototype.normalize()
的使用及相关解释等,还提供了相关视频和链接以帮助理解。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。