C ++ 'da Unicode işlemenin en iyi uygulaması nedir?
C ++ 'da Unicode işlemenin en iyi uygulaması nedir?
Yanıtlar:
is_alpha
. İstediğiniz tanım bu olmadığı sürece asla standart kitaplık yerleşikleri kullanmayın .string
eğer doğruluğa önem veriyorsanız, bunun için daima unicode kitaplığınızı kullanın.Önceki C ++ standartlarıyla geriye dönük uyumluluk umurunuzda değilse, mevcut C ++ 11 standardı yerleşik Unicode desteğine sahiptir: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011 /n3242.pdf
Bu nedenle, C ++ 'da Unicode işleme için gerçekten en iyi uygulama, bunun için yerleşik tesisleri kullanmak olacaktır. Standart şu anda çok yeni olsa da, eski kod tabanlarında bu her zaman bir olasılık değildir.
DÜZENLEME: Açıklığa kavuşturmak gerekirse, C ++ 11 artık Unicode değişmezlerini ve Unicode dizelerini desteklediğinden Unicode'un farkındadır. Ancak, standart kitaplık Unicode işleme ve dönüştürme için yalnızca sınırlı desteğe sahiptir . Mevcut ihtiyaçlarınız için bu yeterli olabilir. Bununla birlikte, şu anda çok miktarda ağır kaldırma yapmanız gerekiyorsa, daha derinlemesine işlemler için YBÜ gibi bir şey kullanmanız gerekebilir . Şu anda çalışmalarda , farklı kodlamalar arasında metin dönüşümü için daha sağlam destek içerecek bazı öneriler var . Benim tahminim (ve umudum) bunun bir sonraki teknik raporun parçası olacağı yönünde .
Şirketimiz (ve diğerleri) , Taligent tarafından orijinal olarak geliştirilen açık kaynak Internation Components for Unicode (ICU) kitaplığını kullanmaktadır.
Dizeleri, yerel ayarları, dönüşümleri, tarih / saatleri, harmanlamayı, dönüşümleri vb. İşler. al.
Yoğun Bakım Kullanım Kılavuzu ile başlayın
İşte Windows programlama için bir kontrol listesi:
C ++ ' da Büyük / Küçük Harfe Duyarsız dize karşılaştırmasına bakın
Bu sorunun Unicode'daki Microsoft belgelerine bir bağlantısı vardır: http://msdn.microsoft.com/en-us/library/cc194799.aspx
Bu makalenin yanında MSDN'de sol taraftaki gezinme tarafına bakarsanız, Unicode işlevleriyle ilgili birçok bilgi bulmanız gerekir. "Kodlama Karakterleri" hakkındaki bir bölümün parçasıdır ( http://msdn.microsoft.com/en-us/library/cc194786.aspx )
Aşağıdaki alt bölümlere sahiptir:
Bu herkes için en iyi uygulama olmasa da, isterseniz kendi C ++ UNICODE rutinlerinizi yazabilirsiniz!
Bunu bir hafta sonunda bitirdim. Çok şey öğrendim, ancak% 100 hatasız olduğunu garanti etmiyorum, çok fazla test yaptım ve doğru çalışıyor gibi görünüyor.
Kodum Yeni BSD lisansı altında ve burada bulunabilir:
http://code.google.com/p/netwidecc/downloads/list
WSUCONV olarak adlandırılır ve UTF-8, UTF-16 ve Standard ASCII arasında dönüşüm sağlayan örnek bir main () programıyla birlikte gelir. Ana kodu atarsanız, UNICODE okumak / yazmak için güzel bir kitaplığınız olur.
Yukarıda söylendiği gibi, bir kütüphane, büyük bir sistemi kullanırken en iyi seçenektir. Bununla birlikte, bazı zamanlarda işleri kendi başınıza halletmek istersiniz (belki kitaplığın bir mikro denetleyicide olduğu gibi birçok kaynağı kullanması nedeniyle). Bu durumda, gerçekten ihtiyacınız olan şeyler için parçaları kopyalayabileceğiniz basit bir kitaplık istersiniz.
Willow Schlanger'ın örnek kodu iyi bir kod gibi görünüyor (daha fazla ayrıntı için cevabına bakın).
Ayrıca daha küçük koda sahip, ancak tam hata kontrolünden yoksun ve yalnızca UTF-8'i işleyen, ancak parçaları çıkarmak daha kolay olan başka bir tane buldum.
İyi görünen gömülü kitaplıkların listesi burada.
IBM'in Unicode için Uluslararası Bileşenlerini Kullanın
UTF-8 Everywhere önerilerine bir göz atın
string
İkili veri olarak ele almadığınız sürece .