字符'É‘(\xc3\x89)和’É‘有不同的代码点。它们看起来是一样的,但是当测试结果是阴性的。
不过,Python可以将它们规范化:unicodedata.normalize('NFC', 'É'.decode('utf-8')) == unicodedata.normalize('NFC', 'É'.decode('utf-8'))返回True。印成了爱玛。
问:在纯bash*中是否有一种将字符串规范化的方法?我研究过iconv,但据我所知,它可以转换为ascii,但不能进行规范化。
*GNU,版本3.2.57(1)-release (x86_64-apple-darwin14 14)
发布于 2016-04-05 12:25:45
如果您有可用的乌孔夫,这可能会完成以下工作:
$ echo -en "E\xcc\x81" | uconv -x Any-NFC | hexdump -C
00000000 c3 89
$ echo -en "\xc3\x89" | uconv -x Any-NFC | hexdump -C
00000000 c3 89Any-NFD也适用于分解的表单。
https://stackoverflow.com/questions/36425326
复制相似问题