微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 奇怪的口音长度为“é”字符串返回2

我有一个奇怪的问题,我无法解释.我试图操纵一个带有口音的字符串为“é”.该字符串来自输入文件类型的图像的名称.

我不能理解的是为什么当我为强调字符解析时,我的字符串被分为两个字符.以下是一个更好理解的例子:

我的é分为两个字,如e& .

"é".length
=> 2

utf8有可能涉及吗?

我真的不明白什么!

解决方法

它们被称为 Combining Diacritical Marks.它们是Unicode的“一块”…一些可以在任何角色“链接”的组合变音符号.显然,在这种情况下,字符串的长度是2(因为有e和’.预先配置的字符如àéèìòù已经被保留兼容,但现在任何字符都可以被重音:-)显然,99%不知道,99.9%的程序支持非常糟糕.我相当肯定他们可以用作某个地方的攻击矢量(但我不是偏执狂:-))

我甚至补充说,即使Skeet在2009年也不知道他们如何工作:http://codeblog.jonskeet.uk/2009/11/02/omg-ponies-aka-humanity-epic-fail/

You see,I Couldn’t remember whether combining characters came before or after base characters

原文地址:https://www.jb51.cc/js/152255.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐