Bir C programında, Unicode kod noktası sırasına geçerli UTF-8 kodlu dizeleri listesini sıralamak istiyorum. Harmanlama yok, yerel duyarlılık yok.strcmp, utf-8 dizeleri kod noktası sırasına göre karşılaştırır mı?
Karşılaştırma işlevine ihtiyacım var. Unicode karakterler üzerinde yinelenen böyle bir işlevi yazmak için yeterince kolaydır. (Ben GLib kullanacağınız başına, bu yüzden g_utf8_next_char
ile yineleme ve g_utf8_next_char
dönüş değerleri karşılaştırmak istiyorum.)
Ama merak dışarı ve muhtemelen basitlik ve verimlilik olduğunu, merak ediyorum: basit bir bayt -for-bayt strcmp
(veya g_strcmp
) aslında aynı işi yapıyor musunuz? Bunun, UTF-8 encodes ilk olarak en önemli bitler ve N + 1 baytlarda kodlama gerektiren bir kod noktasının, N bayt olarak kodlanması gereken bir kod noktasından daha büyük bir başlangıç baytına sahip olması gerektiğini düşünüyorum.
Ama belki bir şeyleri özlüyorum. Şimdiden teşekkürler.
Çok teşekkürler! Kullanım durumumun takibini yapmak üzereydim ve uyarının nasıl uygulandığını düşünmüyordum ve sonra bu bilginin [standart] 'da olduğunu gördüm (http://www.w3.org/TR/xml- c14n # DocumentOrder) Uygulamayı deniyorum: "Dizeleri en az alfabetik olarak en iyi şekilde sipariş eden sözcüksel karşılaştırma, UTF-8 tabanlı sözcükbilgisel sıralamaya eşdeğer olan UCS kod noktası değerlerini temel alır." '' :-) – skagedal