Javascript 统一码 : same letters but different unicode

标签 javascript unicode keyboard-layout

我必须将文本发送到打印服务,它只接受某些类型的特殊字符,即 ï。我的客户以某种方式输入文本,使字母看起来相同,但具有不同的底层 unicode 符号,因此打印服务无法正确处理。示例:

Mine: ï (unicode \u00EF)
Theirs: ï (unicode \u0069\u0308), copy pasting the 2 symbols in chrome bar for example, will show that it actually looks the same in textarea's)

如何将所有特殊字符从“他们的风格”转换为“我的风格”(Windows 上的荷兰语键盘布局)?我想这与操作系统或键盘布局有关,但我找不到说明差异或与此问题相关的任何内容的列表。有人建议如何进行吗?

最佳答案

正如评论中正确指出的那样,有两种方式(或“规范化形式”)在 unicode 中表示重音字符:

  • 带有专用符号 (\u00EF == ï)
  • 由基本字母 + 重音组成(即 i + ¨ == i +\u0308 == ï)

ES6 增加了一个专用函数,可以在规范化形式之间转换字符串:String.normalize .

// convert one-char ("composed") to multiple-chars ("decomposed") form:
escape("\u00EF".normalize("NFD"))  
> "i%u0308"

// convert decomposed form to composed:
escape("i\u0308".normalize("NFC"))  
> "%EF"

如果您的系统还不支持normalize,请四处寻找垫片。

关于Javascript 统一码 : same letters but different unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575742/

相关文章:

javascript - (Material-ui/React) Prop 类型失败 : Invalid prop `cellHeight` supplied to `GridList`

xcode - 在 Dvorak 键盘中键入的 iOS 模拟器显示为 QWERTY 键

windows - Microsoft 键盘布局创建器不允许我创建我的 DLL 文件或安装包

javascript - 如何使用 html5 本地存储显示用户输入列表?

javascript - 在谷歌地图中拖放自定义图标集

Python & MySql : Unicode and Encoding

python - 使用 pygame 显示 unicode 符号

c++ - 如何从 "universal character name"转换为 wchar_t 序列?

keyboard-layout - 为什么在编程 dvorak 时会出现乱序的数字序列?

javascript - 从 Javascript 数组中删除等效但唯一的对象