我的印象是 JavaScript 解释器假定它正在解释的源代码已经被规范化。什么,归一化到底是什么?它不能是文本编辑器,否则源的明文表示会改变。是否有一些“预处理器”进行标准化?
问问题
14795 次
4 回答
17
ECMAScript 6 引入了String.prototype.normalize()
它为您处理 Unicode 规范化。
unorm是此方法的 JavaScript 填充程序,因此String.prototype.normalize()
即使目前没有一个引擎原生支持它,您现在也可以使用它。
有关如何以及何时在 JavaScript 中使用 Unicode 规范化的更多信息,请参阅JavaScript 存在 Unicode 问题– 考虑相似性。
于 2013-12-09T14:20:14.857 回答
16
不,没有根据 ECMAScript 5 在 JavaScript 上自动使用或什至可用的 Unicode 规范化功能。所有字符作为其原始代码点保持不变,可能是非规范形式。
例如尝试:
<script type="text/javascript">
var a= 'café'; // caf\u00E9
var b= 'café'; // cafe\u0301
alert(a+' '+a.length); // café 4
alert(b+' '+b.length); // café 5
alert(a==b); // false
</script>
于 2011-10-14T21:25:14.263 回答
12
如果您正在使用node.js
,则有一个unorm
库。
于 2011-12-11T15:56:52.357 回答
1
我已经更新了@bobince 的答案:
var cafe4= 'caf\u00E9';
var cafe5= 'cafe\u0301';
console.log (
cafe4+' '+cafe4.length, // café 4
cafe5+' '+cafe5.length, // café 5
cafe4 === cafe5, // false
cafe4.normalize() === cafe5.normalize() // true
);
于 2018-01-06T18:53:18.593 回答