J'essaie d'afficher du texte japonais sur le simulateur ios et un ipod touch. Le texte est lu à partir d'un fichier XML. L'en-tête est:objectif c - ne lit pas le fichier encodé utf-8
<?xml version="1.0" encoding="utf-8"?>
Lorsque le texte est en anglais, il s'affiche très bien. Cependant, lorsque le texte est japonais, il apparaît comme un méli-mélo inintelligible de caractères à un octet.
J'ai essayé d'enregistrer le fichier spécifiquement comme unicode en utilisant TextEdit. J'utilise NSXMLParser pour analyser les données. Toutes les idées seraient très appréciées.
Voici le code d'analyse syntaxique
// Override point for customization after application launch.
NSString *xmlFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"questionsutf8.xml"];
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath];
NSData *data = [NSData dataWithBytes:[xmlFileContents UTF8String] length:[xmlFileContents lengthOfBytesUsingEncoding: NSUTF8StringEncoding]];
XMLReader *xmlReader = [[XMLReader alloc] init];
[xmlReader parseXMLData: data];
Pouvez-vous poster le code que vous utilisez pour charger le fichier dans le 'NSXMLParser'? –
Vous pouvez remplacer votre utilisation du 'stringWithContentsOfFile:' avec 'stringWithContentsOfFile: encoding: error:' obsolète. Votre fichier n'a peut-être pas de nomenclature indiquant qu'il s'agit en fait d'UTF-8. – imaginaryboy
Oui, une nomenclature est facultative pour UTF-8. Mais s'il n'y en a pas, stringWithContentsOfFile: ne peut pas le chercher pour déterminer si le contenu d'un fichier est UTF-8 ou un autre encodage 8 bits, tel que ISO-8859- *. Utilisation de dataWithContentsOfFile: évite cette difficulté car NSData ne sait pas ou ne se soucie pas de l'encodage - c'est juste un sac d'octets - et NSXMLParser comprend l'attribut "encoding" dans le préfixe . –