Mat*_*tty 15 javascript unicode normalization unicode-normalization
我的印象是JavaScript解释器假定它正在解释的源代码已经被规范化了.什么,正常化?它不能是文本编辑器,否则源的明文表示会改变.是否有一些"预处理器"可以进行规范化?
bob*_*nce 16
不,根据ECMAScript 5,没有自动使用或甚至可用于JavaScript的Unicode规范化功能.所有字符都保持不变,因为它们的原始代码点可能是非正常形式.
例如尝试:
<script type="text/javascript">
var a= 'café'; // caf\u00E9
var b= 'cafe?'; // cafe\u0301
alert(a+' '+a.length); // café 4
alert(b+' '+b.length); // cafe? 5
alert(a==b); // false
</script>
Run Code Online (Sandbox Code Playgroud)
更新: ECMAScript 6将为JavaScript字符串引入Unicode规范化.
Mat*_*ens 15
ECMAScript 6介绍了String.prototype.normalize()为您处理Unicode规范化.
unorm是这种方法的JavaScript polyfill,因此String.prototype.normalize()即使当前没有一个引擎本身支持它,你也可以使用它.
有关如何以及何时在JavaScript中使用Unicode规范化的更多信息,请参阅JavaScript具有Unicode问题 - 计算相似内容.