-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
输入框有 emoji 表情,字数计算不对 #18
Comments
麻烦帮忙确认下 🙏 @MadCcc |
这个存数据库的话还得看数据库编码吧,直接改可能不太合适 |
@MadCcc M |
如果只考虑视觉字符长度的话,能不能使用 [...new Intl.Segmenter().segment('👩👩👧👦')].length // 1 浏览器不支持就用 import runes from "runes2";
runes("👩👩👧👦").length // 1 来 fallback |
这里的文字长度还是处理过适配 emoji 的,是逻辑不对么 |
有些用户希望长度计算的是视觉上的字符个数,有些用户期待的是原生input的行为,存在两种倾向,对数据库字段长度严格要求的话理应是使用原生的行为。而期待视觉长度的用户应该是以 以 str.length // 165 888,877,470 ops/s
[...str].length // 132 1,031,108 ops/s
[...new Intl.Segmenter().segment(str)].length // 23 29,073 ops/s
runes2(str).length // 103 89,766 ops/s
stringz.length(str) // 66 82,840 ops/s
new Graphemer().countGraphemes(str) // 24 5,628 ops/s 说到底是能否有一个标准对齐的polyfill,或者能对付大部分输入文本可能的情况(比如只多支持emoji部分,不支持合并符号)。如果提供一个flag供两种用户自行切换,维护复杂度又上去了。 |
@Jungzl 理解了,这样看这个问题应该还没有一个合适的通解。 |
统一用 runes 或 runes2 吧。 |
😊 长度被计算为了 1 ,应该是 2
The text was updated successfully, but these errors were encountered: