2016-03-29 15 views
1

C++ düzeyindegibi emoji dizgisini, ios desteği olan "\u{1f604}" unicode'a değiştirmek istiyorum.
Ancak, C++ bu türü desteklemiyor, \u rakamla uyuşmalıdır. Sonra unicode'u "\\u{1f604}" olarak değiştirdim. Şimdi, C++ düzeyinde iyi çalışabilir, ancak bu dizeyi ios düzeyine geçirdiğimde, ios bu dizeyi otomatik olarak emoji olarak değiştirmez.
Bana biraz fikir verebilir misiniz?

Açıkça tarif etmediğim için üzgünüm.
Projemde json'u C++ düzeyinde sunucudan ayrıştırıyorum ve sonra bu verileri IOS düzeyine aktarıyorum.cpp çekirdek seviyesinden ios ui düzeyine kadar emoji unicode geçişi

+0

Muhtemelen '\\ u {1f604}', 'tek çizgi düşünün iOS kodunda bir çek olabilir \ u {1f604}'. – NightFury

+0

Bunun, aynı karakteri temsil etmenin farklı bir yolu olmadığından emin misiniz? Yani C++ 'da ihtiyacınız olan şey "\ u15604" olabilir. OTOH, emoji temel çok dilli düzlemin dışındadır, bu yüzden UTF16 kullanıyorsanız, onu bir vekil çifti olarak kodlamanız gerekebilir. –

cevap

1

C++ 'daki U + FFFF üzerindeki kod noktalarından çıkmak için, \U ve ardından on sekizlik basamak kullanmanız gerekir (C++ 11 veya üstü gerektirir).

u8"\U0001f604" // UTF-8, type const char[] 
u"\U0001f604" // UTF-16, type const char16_t[] 
U"\U0001f604" // UTF-32, type const char32_t[] 
0

Tek ile bir NSString * bağımsız değişken olarak bir kod noktası içeren bir NSInteger alır ve döner bir NSString sınıf yöntemi yazabilirsiniz: İstenen kodlama bağlı olarak, aşağıdaki dize formlarından birini kullanabilirsiniz Bu kod noktasını içeren Unicode karakteri.

Bunu yapmak için, eğer codePoint < = 0xffff ise, tek bir unichar'a çevirirse, aksi halde onu iki unichar'ın, bir yüksek vekil ve bir düşük vekil dizisine dönüştürün (açıklama için Google). Daha sonra bunu NSString'e dönüştürmek için mevcut NSString yöntemlerinden birini kullanın.

Dönüştürme kod noktası yüksek/düşük temsilcisine: 0x10000 çıkartın. Yüksek vekil = 0xd800 + (kod noktası >> 10); düşük vekil = 0xdc00 + (kod noktası & 0x3ff).

Örnek: dize ile başlar veya içerip içermediğini

NSString* smile = [NSString stringWithCodePoint:0x1f604]; 
İlgili konular