2011-11-15 17 views
6

Soketleri ve JSON kullanarak bir nodejs-server ile görüşen bir uygulama yapımındayım ve iOS 5'in kendi NSJSONSerialization'a sahip olduğunu düşündüğüm için bunun yol olabileceğini düşündüm takip et. Daha önce hafif yail kütüphanesini kullandım.NSJSONSerialization and Unicode, birlikte güzel çalmayacak

Neyse, NSJSONSerialization taşıma sonrasında Değişiklikten önce, karakter Ö sunucuya güzel göndereceği ve sırt hala Ö olmak, ama şimdi, NSJSONSerialization unicode char hala Ö bırakır kodlama ile sorunu karşılaşmaya başladı \U00f6.

Belgelerin okunması, JSON nesnelerinin varsayılan olarak UTF8'e dönüştürüldüğü anlamına gelir. Ve yanıtı sunucudan basit bir NSString'e dönüştürdüğümde, Ö beklendiği gibi ortaya çıkıyor, ancak hala JSON'da.

Lütfen düşüncelerinizle ilgili olarak bana yardımcı olun, ya da yayaya dönmeli ya da yerleşik NSJSONSerialization'u kullanmalı mıyım?

, Simon

teşekkür ederiz
+0

"NSJSONSerialization" ın sonuç dizelerinde hala "\ U00f6" kaldığını nasıl belirlediğinize karar verebilir misiniz? Testlerimde, doğru şekilde 'ö' kodunu çözer. Ortaya çıkan "NSDictionary"/"NSArray" öğesinin varsayılan '-description 'temsilini gerçekten karıştırmıyor olduğundan emin misiniz? – wulong

+0

ne demek istiyorsun? Basit bir 'NSLog (@"% @ ", [NSJSONSerialization JSONObjectWithData: veri seçenekleri: 0 hata: &err]);', kodu çözülmüş unicode olan bir dizgeyle çıktılar, yani '\ U00f6'. – Simon

+1

NSLog'un temsil etmeyi seçtiği yol olabilir. karakter günlüğü temiz tutmak uğruna asıl karakter yerine kaçan kodla birlikte Veri nesnesini doğrudan bir ağ kitaplığından NSJSONSerialization'a mı aktarıyorsunuz? Bazı örnek kodlar gönderebilir misiniz? –

cevap

3

NSLog, açıklamasını, kendi karakterinin yerine Unicode kodunun yazdırıldığı argümanlarında açıklamasını önerir.

NSLog(@"%@", [NSDictionary dictionaryWithObject:@"ö" forKey:@"hello"]); 

Ve bunu JSON kod çözme ince yapıldığını,

{ 
    hello = "\U00f6"; 
} 

yüzden şansı var yazdırır olduğunu göreceksiniz: Örneğin deneyin.

0

JSONSerialization sadece belirli türleri ile kullanılabilir: varsayılan olarak yalnızca NSString, NSNumber, NSArray, NSDictionary veya NSNull ... Eğer JSON diğer nesneleri kullanmanız gerekiyorsa, ben https://github.com/johnezang/JSONKit