Javascript Unicode:相同的字母但不同的Unicode
我必须将文本发送到printservice,它只接受特定类型的特殊字符,例如,I。我的客户机以某种方式输入文本,使字母看起来相同,但具有不同的基础unicode符号,因此无法由printservice正确处理。例如:Javascript Unicode:相同的字母但不同的Unicode,javascript,unicode,keyboard-layout,Javascript,Unicode,Keyboard Layout,我必须将文本发送到printservice,它只接受特定类型的特殊字符,例如,I。我的客户机以某种方式输入文本,使字母看起来相同,但具有不同的基础unicode符号,因此无法由printservice正确处理。例如: Mine: ï (unicode \u00EF) Theirs: ï (unicode \u0069\u0308), copy pasting the 2 symbols in chrome bar for example, will show that it actually
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==i
标准化
,请四处寻找垫片。是I或带分音符的拉丁文小写字母I(并且\u0020是空格字符)
是拉丁文小写字母I后跟组合分隔符
需要将第二个两字符序列转换为第一个。在发送到打印服务之前,您需要找到一些实用程序来执行此规范化
有关一些选项,请参阅。它们都有效。重音字符可以通过合成两个字符来完成,许多字符还具有专用字符。听起来像是printservice无法处理某些类型的有效Unicode的错误。谢谢您的评论。这确实是printservice中的一个bug,但是更改代码超出了我的范围。有没有一种(简单的)方法可以将所有的作文转换成一个单独的专用字符?正如当前的答案所强调的,我认为你在撰写问题时输入了错误的样本数据。这只是一个分隔符(当然,也是很好的空白)。@lvaroG.Vicario我更正了Kevin Hakanson回答的每个问题的Unicode码点数。“所有的组成都是一个专用字符”-这个概念只适用于Unicode有专用字符的情况。组合字符可以应用到的基本字符没有限制,组合字符的顺序也没有限制。为什么要投反对票?非常有用和正确的答案。
// 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"