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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...