J'ai un problème avec le code suivant:NSLog incorrect encodage
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
NSLog(@"%s", temp);
dans la première ligne des codes, deux caractères chinois sont entre guillemets doubles. Le problème est la fonction printf peut afficher les caractères chinois correctement, mais NSLog ne peut pas.
Merci à tous. J'ai trouvé une solution à ce problème. Foundation utilise par défaut UTF-16, donc pour utiliser NSLog pour sortir la chaîne c dans l'exemple, je dois utiliser cStringUsingEncoding pour obtenir la chaîne UTF-16 c et utiliser% S pour remplacer% s.
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
strcpy(temp, [strValue cStringUsingEncoding:NSUTF16LittleEndianStringEncoding]);
NSLog(@"%S", temp);
Bonne approche :-) cela fonctionnera-t-il avec les blancs entre '#' et 'define'? Aussi, peut-être qu'une ligne d'explication peut être utile, car la ligne de code est très longue et donc pas lisible. –
@peter_the_oak Travail parfait pour moi – Gank