Tengo un problema con el código siguiente:NSLog codificación incorrecta
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
NSLog(@"%s", temp);
en la primera línea de los códigos, dos caracteres chinos están entre comillas dobles. El problema es que la función printf puede mostrar los caracteres chinos correctamente, pero NSLog no puede.
Gracias a todos. Descubrí una solución para este problema. Foundation usa UTF-16 por defecto, así que para usar NSLog para generar la cadena c en el ejemplo, tengo que usar cStringUsingEncoding para obtener UTF-16 c string y usar% S para reemplazar% s.
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
strcpy(temp, [strValue cStringUsingEncoding:NSUTF16LittleEndianStringEncoding]);
NSLog(@"%S", temp);
Buen enfoque :-) ¿Funcionará con los espacios en blanco entre '#' y 'define'? Además, tal vez una línea de explicación puede ser útil, ya que la línea de código es muy larga y, por lo tanto, no es fácil de leer. –
@peter_the_oak Trabajo perfecto para mí – Gank