【发布时间】:2011-10-29 04:45:30
【问题描述】:
我在 Javascript 中有两个字符串:"_strange_chars_µö¬é@zendesk.com.eml" (f1) 和 "_strange_chars_µö¬é@zendesk.com.eml" (f2)。乍一看,它们看起来是一样的(实际上,在 StackOverflow 上,它们可能是一样的;我不确定当它们被粘贴到这样的表单中时会发生什么。)然而,在我的应用程序中,
f1[16] // ö
f2[16] // o
f1[17] // ¬
f2[17] // ̈
也就是说,f1 使用 ö 字符,f2 使用 o 和变音符号 ¨ 作为单独的字符.我可以做哪些比较来显示这两个字符串“相等”?
【问题讨论】:
-
一个解决方案——也许是唯一的一个——是“规范化”(在 Unicode 意义上)这两个字符串,但我还没有找到一个库或函数。
-
您确定已在元标记中声明了 UTF-8 吗?
-
好问题,@cwallenpoole。我不是,但我现在要仔细检查。我已经描述的两个字符串肯定 can 都是有效的 Unicode,但我不确定它们 是。
-
@cwallenpoole 页面声明
<meta charset="utf-8">,表单(文件输入是第一个字符串的来源)声明accept-charset="UTF-8"。当然,HTTP 请求和响应也是 UTF-8。我认为这只是使用不同 Unicode 规范化的不同系统(浏览器与服务器)的情况。 (或者使用与不使用规范化。)
标签: javascript string unicode normalization unicode-normalization