比较 unicode 字符时,Javascript 字符串比较失败

2024-04-11

我想比较 JavaScript 中两个相同的字符串,但相等运算符==返回假。一个字符串包含一个特殊字符(例如丹麦语å).

JavaScript 代码:

var filenameFromJS = "Designhåndbog.pdf";
var filenameFromServer = "Designhåndbog.pdf";

print(filenameFromJS == filenameFromServer); // This prints false why?

解决方案正如 slevithan 指出的那样,对我有用的是 unicode 标准化。

我分叉了我原来的 jsfiddle 来使用 slevithan 建议的标准化库制作一个版本。关联:http://jsfiddle.net/GWZ8j/1/ http://jsfiddle.net/GWZ8j/1/.


与这里其他人所说的不同,这与编码无关。相反,您的两个字符串使用不同的代码点来呈现相同的视觉字符。

为了正确解决这个问题,您需要在比较两个字符串之前对它们执行 Unicode 规范化。不幸的是,JavaScript 没有内置此功能。下面是一个可以为您执行规范化的 JavaScript 库:https://github.com/walling/unorm https://github.com/walling/unorm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较 unicode 字符时,Javascript 字符串比较失败 的相关文章

随机推荐