字符串中的unicode控制符

Unicode控制字符

Unicode控制字符(英语:Unicode control characters)是用于控制文本解释或者显示,而不可见或不占空间的Unicode字符(零宽字符)

为了简化几种换行字符,Unicode引入了它自己的分隔符来格式化文本:

U+2028 line separator ,HTML:
,LSEP
    char(8232)  \u2028
    
U+2029 paragraph separator ,HTML:
,PSEP
    char(8233)  \u2029

实例:

d = "进
出口中心"
s = "进出口中心"

print(d == s) # False

#  d 里面有个 U+2029 Paragraph Separator

Unicode 有 NFKC 、NFKD 、NFC 和 NFD 四种正规形式

Unicode等价性

正规形式 —
NFD  
Normalization Form Canonical Decomposition 以标准等价方式来分解
NFC  
Normalization Form Canonical Composition 以标准等价方式来分解,然后以标准等价重组之。若是singleton的话,重组结果有可能和分解前不同
NFKD  
Normalization Form Compatibility Decomposition 以兼容等价方式来分解
NFKC  
Normalization Form Compatibility Composition 以兼容等价方式来分解,然后以标准等价重组之

因正规化不同而导致的错误

当两个应用程序分享统一码资料,但却使用不同正规形式时,就有可能导致错误。
例如,Mac OS X有许多对象是只能使用分解字符(因此,以UTF-8为编码又限定分解形式的统一码又被称为"UTF8-MAC")。
在一特例中,OS X错误处理用途而产生的组合字符和Samba文件和打印分享软件(在复制文件时,会将分解过的字母替换成组合过的字母)混合使用时,
会导致混淆和损坏资料。[3][4]应用程序若要避免此类问题,可以保留输入码点,然后只在程序内部使用自己的正规化形式。
Buy me a 肥仔水!