linux一般utf8签名吗,linux – 用于相同变音符号(变音符号)的不同UTF-8签名 – 用于编写变音符号的2种二进制方式...

它与死键并不完全相同,但它是相关的.正如您所研究的那样,U 00F6和U 006F以及U 0308具有相同的视觉效果.

事实上,在知道对待它们时,Unicode规则是基于分解的.字符数据库中有一个分解表,它告诉我们U 00F6规范地分解为U 006F,然后是U 0308.

除了规范分解之外,还存在兼容性分解.这些丢失了一些信息,例如²最终会被分解为2.这显然是一种破坏性的变化,但是当你想要有点模糊时搜索是有用的(谷歌如何知道搜索鱼应该返回关于鱼的结果) .

如果在非组合字符后面有多个组合字符,那么只要我们不重新排序同一类的字符,我们就可以对它们进行重新排序.当我们认为我们是否把一个cedilla放在某个东西然后是一个尖锐的口音,或者是一个尖锐的,然后是一个cedilla,无关紧要时,这一点就变得清楚了.但是如果我们在一封信中加上一个尖锐的和一个变音符号,它显然很重要他们走的路.

由此,我们有4种标准化形式.在进行比较之前将字符串放入适当的规范化形式,并且不会被绊倒.

NFD:尽可能通过规范地分解它来打破一切.按照它们的组合类的顺序重新排序组合字符,但是以相同的顺序保持任何相同的类相对于彼此.

NFC:首先将所有内容都放入NFD.然后,如果没有同一个类的早期版本,则按顺序连续查看组合字符.如果存在等效的单个字符,则替换它们,然后重新进行扫描,以便进一步构建.

NFKD:与NFD一样,但使用兼容性分解(破坏性更改,但对于如上所述的比较有用).

NFD:做NFKD,然后根据NFC重新组合规范.

还有一些重新组合被禁止在NFC中使用,因此如果Unicode中添加了更多字符,那么在一个Unicode版本中有效NFC的文本不会停止为NFC.

在NFD和NFC中,NFC显然更简洁.它不是最简洁的,但它是非常简洁的,可以以非常有效的流方式进行测试和/或创建.

Mac OSX使用NFD作为文件名.因为他们是怪人. (好吧,有比这更好的论据,他们只是没有说服我!)

Web角色模型使用NFC.*因此,您应该尽可能在Web上使用NFC.然而,盲目地将内容转换为NFC可能存在安全性因素.但如果它从你开始,它应该从NFC开始.

任何处理文本的编程语言都应该有一种将文本标准化为任何这些形式的好方法.如果你的不抱怨(或者你的是开源的,贡献!).

*为了获得额外的乐趣,如果您在XML或HTML元素内容的开头插入以长固体叠加(U 0338)组合的内容,则会转换为>将标签转换为≯,将格式良好的XML转化为乱码.出于这个原因,Web角色模型坚持认为每个实体本身必须是NFC而不是以组合字符开头.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值