'É' (E\xcc\x81
) ve 'É' (\xc3\x89
) karakterleri farklı kod noktalarına sahiptir. Aynı görünüyorlar, ancak bir maç için test yaparken sonuç negatiftir.Düz bash'ta dize normalleştirme
Python bunları normalleştirebilir, ancak: unicodedata.normalize('NFC', 'É'.decode('utf-8')) == unicodedata.normalize('NFC', 'É'.decode('utf-8'))
, True
değerini döndürür. Ve e olarak yazdırır.
Soru: saf bash * dizelerini normalize etmenin bir yolu var mı? Ben iconv
içine baktım ama bildiğim kadarıyla ascii'ye bir dönüşüm yapabilir ama normalleştirilemez.
* GNU bash mevcut uconv varsa, bu muhtemelen işi yapacağım, versiyon 3.2.57 (1) -salınımı (x86_64-elma-darwin14))
Kabuklardaki dizgilerin taşınması tasarım açısından minimalisttir. Unicode normalizasyonu sadece uymuyordu, bu yüzden yerleşik olsaydı şaşırırdım. – Jens
'iconv' "saf bash" olarak mı düşünüyorsunuz? Bu sadece Python gibi harici bir program. – chepner
Özür dileriz, spec özelliklerine göre os x shell'den doğal olarak kullanılabilir. – user2243670