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
四种正规形式
正规形式 | — |
---|---|
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]应用程序若要避免此类问题,可以保留输入码点,然后只在程序内部使用自己的正规化形式。