Ich schreibe eine App, um mit einem DirecTV-Empfänger über die HTTP-Serverschnittstelle zu interagieren. Ich bin in der Lage, das Gerät abzufragen und die SJON-formatierte Antwort zu erhalten.Konvertierung von NSMutableData in NSString schlägt fehl, wenn Sonderzeichen vorhanden ist
Hier ist mein Beispielcode ist:
- (NSDictionary *) readDVRData
{
NSMutableData *rData = [[NSMutableData alloc] initWithContentsOfFile:@"./data"];
//NSLog(@"rData = %@",rData);
NSString *rString = [[NSString alloc] initWithData:rData encoding:NSUTF8StringEncoding];
NSLog(@"rString = %@",rString);
NSError *error;
SBJSON *json = [[SBJSON new] autorelease];
NSDictionary *response = [json objectWithString:rString error:&error];
//NSLog(@"response = %@",response);
return response;
}
Zu Testzwecken gespeichert ich die Antwort auf die Datendatei, und ich bin von ihm in dem obigen Beispiel zu lesen. Die Konvertierung von NSMutableData in NSString erfolgt über:
NSString *rString = [[NSString alloc] initWithData:rData encoding:NSUTF8StringEncoding];
schlägt fehl, wenn das folgende Zeichen vorhanden ist. È wie in Crème Fraiche. Als Referenz wurde dies in der Episode Title und Beschreibung aus einer South Park-Aufnahme.
Wenn ich dieses Zeichen in ein Großbuchstabe "E" ändere, funktioniert die Umwandlung. Gibt es eine andere Methode, die ich verwenden sollte, um so etwas zu fangen? Oder gibt es eine einfache Möglichkeit, solche Zeichen zu entfernen? Bitte beachten Sie, dass ich vorher nicht weiß, ob es ein Akzentzeichen oder etwas anderes ist, das die Konvertierung fehlschlagen lässt.
Danke, Dave
Snippet Datendatei, wenn diese benötigt wird. Ich würde den gesamten Text einschließen, aber es schiebt die Zeichengrenze über das Limit von 30000 hinaus.
{
"groupId": "1 1 381C3",
"groupTitle": "South Park",
"isRecording": false,
"numItems": 10,
"numNewItems": 10,
"programs": [
{
"callsign": "COMHD",
"contentId": "1 1 381C3 198",
"description": "\"CrÈme Fraiche\" Animation, Comedy. (2010) Trey Parker, Matt Stone. Randy's obsession with the Food Network forces Sharon to explore a new interest of her own. Series.",
"duration": 1800,
"episodeTitle": "CrÈme Fraiche",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6937756",
"rating": "TV-MA-L",
"startTime": 1290056400,
"title": "South Park",
"uniqueId": "5397375192530140068"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 197",
"description": "\"Coon vs. Coon & Friends\" Animation, Comedy. (2010) Trey Parker, Matt Stone. Coon and Friends find themselves at the mercy of Cartman who now has the dark lord doing his bidding; Kenny wrestles with the curse of his super power. Series.",
"duration": 1800,
"episodeTitle": "Coon vs. Coon & Friends",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6918387",
"rating": "TV-MA-L",
"startTime": 1289444400,
"title": "South Park",
"uniqueId": "8476957599452610419"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 196",
"description": "\"Mysterion Rises\" Animation, Comedy. (2010) Trey Parker, Matt Stone. Mysterion's true identity is revealed; scorned by fellow superheroes, one goes out for revenge. Series.",
"duration": 1800,
"episodeTitle": "Mysterion Rises",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6896823",
"rating": "TV-MA-L",
"startTime": 1288843200,
"title": "South Park",
"uniqueId": "2113731123121326471"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 0",
"description": "Animation, Comedy. Trey Parker, Matt Stone. The adventures of four boys who live in South Park, Colo. Series.",
"duration": 1800,
"episodeTitle": "",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6830127",
"rating": "TV-MA-L",
"startTime": 1288751400,
"title": "South Park",
"uniqueId": "2166056034991125062"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 195",
"description": "\"Coon 2: Hindsight\" Animation, Comedy. (2010) Trey Parker, Matt Stone. Coon and friends set out to help the victims of BP's latest catastrophic drilling accident in the Gulf. Series.",
"duration": 1800,
"episodeTitle": "Coon 2: Hindsight",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6876407",
"rating": "TV-MA-L",
"startTime": 1288238400,
"title": "South Park",
"uniqueId": "8615834721021879366"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 194",
"description": "\"Insheeption\" Animation, Comedy. (2010) Trey Parker, Matt Stone. When Stan is sent to the school counselor because he's holding on to an obscene number of useless possessions, he realizes that Mr. Mackey had a hoarding disorder too. Series.",
"duration": 1783,
"episodeTitle": "Insheeption",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6857628",
"rating": "TV-MA-L",
"startTime": 1287626416,
"title": "South Park",
"uniqueId": "1547798106243799673"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 193",
"description": "\"It's a Jersey Thing\" Animation, Comedy. (2010) Trey Parker, Matt Stone. New Jersey is taking over the nation one state at a time, Randy and the boys take a stand as the Jerseyites approach South Park. Series.",
"duration": 1800,
"episodeTitle": "It's a Jersey Thing",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6839243",
"rating": "TV-MA-L",
"startTime": 1287028800,
"title": "South Park",
"uniqueId": "8123622337314668826"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 193",
"description": "\"It's a Jersey Thing\" Animation, Comedy. (2010) Trey Parker, Matt Stone. New Jersey is taking over the nation one state at a time, Randy and the boys take a stand as the Jerseyites approach South Park. Series.",
"duration": 1784,
"episodeTitle": "It's a Jersey Thing",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6839243",
"rating": "TV-MA-L",
"startTime": 1287021615,
"title": "South Park",
"uniqueId": "949183344652655207"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 0",
"description": "Animation, Comedy. Trey Parker, Matt Stone. The adventures of four boys who live in South Park, Colo. Series.",
"duration": 1800,
"episodeTitle": "",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6830127",
"rating": "TV-MA-L",
"startTime": 1286937000,
"title": "South Park",
"uniqueId": "7841891672059226043"
},
{
"callsign": "COMHD",
"contentId": "1 1 381C3 0",
"description": "Animation, Comedy. Trey Parker, Matt Stone. The adventures of four boys who live in South Park, Colo. Series.",
"duration": 1800,
"episodeTitle": "",
"expiration": "0",
"isHd": true,
"isPartial": false,
"isPpv": false,
"isRecording": false,
"isViewed": false,
"isVod": false,
"keepUntilFull": true,
"major": 249,
"minor": 65535,
"programId": "6830127",
"rating": "TV-MA-L",
"startTime": 1286856000,
"title": "South Park",
"uniqueId": "3872435936942587460"
}
]
}
Dies funktionierte. Vielen Dank. – Dave
@Dave, wenn es funktioniert, sollten Sie es als die richtige Antwort akzeptieren. – benzado
@benzado, sorry wusste nicht, wie das geht. Hoffentlich klickt das Häkchen als richtige Antwort an. – Dave