前言最近同事在接入西班牙语的数据时, 发现了一个问题, 涉及到西班牙语中包含重音富符号的数据比对出了问题, 同事已经找出可能是字符串规范话(Normalize)的问题, 但是现象很奇怪, 今天就做了一些测试, 将测试结果记录下来. 以供大家参考.常用规范化:NFC: 规范化组合型, 如é是一个字符NFD: 规范化分解型, 如é是两个字符e和´NFKC: 兼容性规范化组合型NFKD: 兼容性规范化分解型先说结论在 HTML/JavasCript/Java/PostGreSQL 中, 不会自动对字符串的规范话进行转换, 也就是说, 从前端(html/js)传递到后端(java), 再传递到数据库(PostGreSQL)的过程中, 字符串的规范化是不变的, 所以只是文字传递, 不会出现问题.出问题的地方是文件系统:Windows 文件系统(如 NTFS)通常使用NFC形式存储文件名。macOS 文件系统(如 HFS+ 或 APFS)通常使用NFD形式存储文件名。Linux 文件系统(如 ext4)通常使用NFC,但这也可能因环境和设置而异。导致上传文件时, 文件名的规范化不一致, 会导致文件名比对是不一致的.问题现象同名的文件名上传时, 会进入数据库比对一下文件名是否存在, 但是由于文件名的规范化不一致, 会导致文件名比对不一致. 从而重复上传文
...
继续阅读
(29)