2010-03-26 20 views
20

cuando intento convertir forma UTF-8 cadena a NSString así:"incompleta nombre de carácter universal" con stringWithUTF8String

NSString *s = [NSString stringWithUTF8String:"\U0627\U0644\U0641\U0631\U0646"]; 
NSLog(@"%@", s); 

me sale el error de compilación:

incomplete universal character name 

nota de que en algún momento solo funciona bien:

NSString *UAE = [NSString stringWithUTF8String:"\U0627\U0644\U0641\U0631\U0646"]; 
    NSLog(@"%@", UAE); 

y la salida: 012

الامارات 

¿por qué sucede eso? por favor ayuda.

+0

Gee, eso es un error en Xcode. No ASCII todavía es difícil de conseguir para algunas naciones ;-) – brainray

Respuesta

0

nombre de carácter universal incompleto significa que le falta parte de uno de los caracteres utf8 que está tratando de escribir.

UTF8 símbolos abarca desde 1 byte a byte 4 símbolos, probablemente uno de los suyos es más largo que anotó y se echa en falta 1 byte o tal ..

+0

muchas gracias Jack, sin embargo, estoy tratando de analizar la cadena UTF-8 de un servicio web que no tengo control. El espacio en la cadena utf-8 tiene algo que ver con el problema. quiero decir, ¿cómo puedo representar un char espacial en mi caso aquí? gracias de nuevo – Nasser

+0

Si la cadena proviene de un servicio web, ¿cómo se obtiene un error en tiempo de compilación? –

+0

en realidad copié manualmente la cadena utf-8 del dict return y la pruebo usando el método -stringWithUTF8String, esto es cuando obtengo el error en tiempo de compilación – Nasser

36

\ U y \ u no son la misma cosa. El escape \ T espera 8 dígitos (hex) en lugar de 4.

esto debería funcionar:

NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"]; 
+0

man man man, muchísimas gracias :) – Nasser

+2

Apple comete este error cuando grabar eventos para pruebas de UI. (A partir de Xcode 7.3 al menos) –

Cuestiones relacionadas