»
(008)H5特殊字符
Html必用特殊符号 英文空格( ):   And符号(&):& & 小于号(<):< < 大于号(>):> > 半角双引号("):" " 半角单引号('):‘ ' �是十进制表示的UCS-2编码字符,�是十六进制表示的UCS-2编码字符。UCS-2编码字符兼容ASCII码,是UTF-16的子集。 JS中的必用特殊符号 半角双引号("):\u0022 半角单引号('):\u0027 \u为JS中十六进制表示的UCS-2 CSS中的必用特殊符号 半角双引号("):\0022 半角单引号('):\0027 \为CSS中十六进制表示的UCS-2 有了这几个特殊符号的代码表示方式,HTML页面就能够表示出任何的内容。 在JavaScript和CSS中,字符采用的是UCS-2编码方案,实际上是UTF-16的一个子集,而不是完整的UTF-16。没法用两字节表示的字符,JavaScript通过代理对的方式表示,也就是两个UCS-2字符合起来表示一个字符。这种字符编码方式就是UCS-2+代理对(surrogate pair)的编码方式。代理字符surrogate开头为�。 JavaScript中对代理字符对的处理会当作两个字符来处理,很多时候处理结果是错误的。 而ES6对代理字符对,当作一个字符来处理。所以,ES6能够准确地处理任何字符。 比如原生JS的对扩展字符的处理过程为: "bytes:💩".split("") 结果为: 而ES6的方法对扩展字符的处理过程为(ES6语法,展开为数组): [..."bytes:💩"] 结果为: 即:原生JS处理对代理字符对,当作两个字符;ES6处理代理字符对,当作一个字符来处理。 所以,在JS中对特殊字符或字符串的查找、拆分比较特殊,需要考虑4字节字符的处理方法。 比如下面的处理方法是错误的: "bytes:💩".substring(0,7) 结果为: 正确的方法为: [..."bytes:💩"].splice(0,7).join(""); 结果为: 所以,ES6也对正则表达式做了扩展,加入了u符号,/\u0000\u0000/u识别D800以后的4字节文字,会将4字节看做1个字符来匹配。 附加一个JS或者说是ES6处理国际化扩展字符集姓氏的正确方法: var surname=[..."💩否"][0]; 结果为: ————www.v-signon.com学习者共勉