NSLog: kodlarının ilk satırında Aşağıdaki kod ile bir sorun var yanlış kodlama
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
NSLog(@"%s", temp);
, iki Çince karakterler alıntılanan çift bulunmaktadır. Sorun printf işlevi Çince karakterleri düzgün görüntüleyebilir, ancak NSLog yapamaz.
Herkese teşekkürler. Bu problem için bir çözüm buldum. Foundation, UTF-16'yı varsayılan olarak kullanır, bu nedenle örnekte c dizgisini çıkarmak için NSLog'u kullanmak için, UTF-16 c dizesini almak için cStringUsingEncoding kullanmalı ve% S'yi değiştirmek için% S kullanmalısınız.
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
strcpy(temp, [strValue cStringUsingEncoding:NSUTF16LittleEndianStringEncoding]);
NSLog(@"%S", temp);
İyi bir yaklaşım :-) '#' ve 'define' arasındaki boşluklarla çalışacak mı? Ayrıca, kod satırı çok uzun olduğu ve bu nedenle iyi okunabilir olmadığı için belki de bir açıklama satırı yardımcı olabilir. –
@peter_the_oak Benim için mükemmel çalış – Gank