Comment faire pour convertir un unichar de la valeur à un NSString en Objective-C?

J'ai un caractère international stockées dans un unichar variable. Ce personnage n'est pas venu à partir d'un fichier ou d'une url. La variable elle-même que les magasins unsigned short(0xce91) qui est au format UTF-8 et se traduit par la lettre majuscule grecque 'Un'. Je suis en train de mettre le personnage dans un NSString variable, mais j'échoue lamentablement.

J'ai essayé 2 façons différentes à la fois de ce qui échoue:

unichar greekAlpha = 0xce91; //could have written greekAlpha = 'Α' instead.

NSString *theString = [NSString stringWithFormat:@"Greek Alpha: %C", greekAlpha];

Rien de bon. Je reçois un peu bizarre caractères chinois. Au passage, cela fonctionne parfaitement avec les caractères anglais.

Puis, j'ai aussi essayé ceci:

NSString *byteString = [[NSString alloc] initWithBytes:&greekAlpha
                                                length:sizeof(unichar)
                                              encoding:NSUTF8StringEncoding];

Mais cela ne fonctionne pas non plus.
Je suis évidemment faire quelque chose de mal, mais je ne sais pas quoi.
Quelqu'un peut-il m'aider s'il vous plaît ?
Merci!

  • Vous pouvez mettre en forme le code pour la belle mise en forme en appuyant sur le petit bouton en disant: 101010 dans la barre d'outils editeur.
  • Merci de me le faire savoir 🙂
  • Êtes-vous sûr unichar est le bon type de données à l'aide ici? Le stockage des données UTF-8 dans un type destiné à être utilisé pour l'UTF-16 sent mauvais. Comme indiqué par Jon Jardine, il y a des caractères UTF-8 de plus de 16 bits... Pourriez-vous utiliser NSString pour le seul char trop (NSString greekAlpha = @"Α" et ensuite utiliser %@ dans stringWithFormat)?
  • 0xce91 est en fait l'Unicode pour "HANGUL SYLLABE KAEG", donc je ne peux pas comprendre pourquoi vous pouvez vous attendre à obtenir un caractère Alpha à partir de cela. Vous semblez confondre par la LETTRE minuscule LATINE ALPHA étant 0xc9, 0x91 en UTF-8. Totalement différent de l'encodage. La valeur Unicode est 0x0251.
InformationsquelleAutor Terry | 2009-11-21