ios:解析具有阿拉伯语单词的JSON返回NULL



我正在尝试从Google Addresses解析JSON,如果JSON响应中没有阿拉伯单词/地址,这会很好。如果JSON响应中有阿拉伯语单词

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

这将null作为响应字符串。从谷歌获取数据并发送到解析器的代码

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
self.responseData = nil;    
}
#pragma mark JSON and XML parsing NSXMLPARSER
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if([getMode isEqualToString:@"0"])//JSON
{
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"responseString: %@", responseString);
}

Google Query获取数据并将responseString显示为NULL

http://maps.google.com/maps/nav?q=from:King%20Khalid%20Tunnel,%20Mecca%202448%20to:3748,%20%20Al%20Hindawiyah,%20Mcca%2024232&传感器=真&key=AIzaSyB4A8OGSdi_rsBsYl3_OCap6zAA1wXSRJg

我从NSLog 复制了此NSMutibleData

<7b226e61 6d65223a 2266726f 6d3a4b69 6e67204b 68616c69 64205475 6e656c 2c204d65 63636120 32343234 3820746f 3a3333732 312c2020 416c2048 696e6461 7769797979 61682c20 4d656363 61203234 32333222 2c225374 61747573 223a7b22 636f6465 223a3230 302c2272 65717565 7374223a 22646972 65637469 6f6e7322 7d2250 6c616365 6d61726b 223a5b7b 22696422 3a222c 22616464 72657373 223a224b 696e6720 4b68616c 69642054756e6e65 6c2c204d 65636361 20536175 64692041 72616269 61222c22 41646472 65737344 65746169 6c73223a 7b22436f 756e7472 79223a7b 22436f75 6e747279 4e616d65 436f6465 223a2253 41222c22 436f756e 7472794e 616d6522 3a2225361 75646920 41726162 6961222c 2241646d 696e 6973 74726174 69766541 72656122 3a7b2241 646d696e 6937472 61746976 65417265 614e616d 65223a22 4d616b6b 61682050 726f7669 6e636522 2c224c6f63616c69 7479223a 7b224c6f 63616c6 74794e61 6d65223a 224d6563 6361222c 2254686f 726f7567 68666172 65223a7b 2254686 f 726f767 68666172 654e616d 65223a22 4b696e67 204b6861 6c696420 54756e6e 656c227d 7d7d7d2c 22416363 75726163 79223a20 367d2c22 506f696e 74223a7be 22636f6f 7264696e 61746573 223a5b33 392e3839 3339393935 2c32312e 34323737 31322c30 5d7d7d2c 7b226964 223a2222 2c226164 64726573 73223a2238343436 2c20416c 2048696e 64617769 79796168 2c204d61 6b6b6168 20323432 3332a033 3732312c 20536175 64692041 72616269 61222c22 41646472 65737344 65746169 6c73223a 7b22436f 756e7472 79223a7b 22436f75 6e747279 4e616d65 436f6465 223a2253 41222c22 436f756e 7472794e 616d6522 3a225c75 30363237 5c7530336 34345c75 30363333 5c75036 33395c75 30363438 5c75303036 32465c75 63441 5c75036 3239222c 224c6f63616c6974 79223a7b 224c6f63 616c6974794e616d 65223a22 5c753306 34355c75 30363433 5c75036 3239222c 22446570 656e6465 6e744c6f 63616c69 7479223a 7b224465 70656e64 656e744c 6f63616c 6974794e 616d6522 3a225c75 30363237 5c7533036 34345c75 30363337 5c75303036 32375c75 30363638 5c7533063 34415c75 30363139 222c2241 64647265 73734c69 e65223a 5b223834 3436225d 2c22506f 7374616c436f6465 223a7b22 506f7374 616c436f 64654e75 6d626572 223a2232 34323332 a0333732 31227d 7d 7d2 22 41636375 72616379 223a2038 7d2 2250 6f696e74 223a7b2 636f6f72 64696e61 74657322 3a5b3339 2e373936 3433342c 32312e34 31363737 302c305d 7d5d2 c 22446972 65637469 6f6e7322 3a7b2263 6f707972 69676874 7348746d 6c223a22 4d617020 64617461 20a93230 31332047 6f6f676c 65222c22 73756d6d 61727948 746d6c223a223134 2e355c75 30303236 6e627370 3b6b6d20 2861626f 75742031 37206d69 6e732922 2c224469 7374616e 6365223a 7b226d65 74657273 223a3134 3532372c 2268746d 6c223a22 31342e35 5c753303 32366e62 73703b6b 6d227d2c 22447572 6174696f 6 e223a7b 22736563 6f6e6473 223a3939 312c2268 746d6c22 3a2223137 206d696e 73227d2c 22526f75 74657322 3a5b7b22 44697374 616e636 5 223a7b22 6d657465 7273223a 31343532 372c2268746d6c22 3a222334 2e355c75 30303236 6e627370 3b6b6d22 7d2c22244 75726174 696f6e22 3a7b2273 65636f6e 6473223a 3939312c 2268746d 6c223a22 3137206d 696e7322 7d2c22273 756d61 72794874 6d6c223a 2231342e 355c7530 3032366e 6273703b 6b6d2028 61626f75 74203137 206d696e 7329222c 22537465 7073223a 5b7b2264 65736372 69707469 6f6e4874 6d2c223a 22486561 642 05c75 30303343 625c7530 30334573 6f757468 776573745c753303 33435c2f 625c7530 30334520 6f6e205c 7533033 43625c75 30303345 4b696e67 204b6861 6c696420 54756e6e 656c5c75 30305243 5c2f625c 75330330 4520746f 77617264 205c7530 303 34362 5c753300 33454b69 6e67204b 68616c69 64204272 69646765 5c7533030 33435c2f625c753030334522 2c224469 7374616e 6365223a 7b226d65 74657273 223a3133 32372c22 68746d6c 223a2231 2e335c 75 30303236 6e62737075726174 696f6e22 3a7b2273 65636f6e 6473223a 36362c22 68746d6c 223a2231 206d696e 227d2c22 506f696e 74223a7b 22636f6f 7264696e 61746573 223a5b33 392e3839 333939393935 2c32312e 34323737 31322c30 5d7d7d2c 7b226465 73637269 7074696f 6e48746d 6c223a22 54616b65 20746865 2072616d 70206f6e 746f205c 7533033 43625c75 30303345 4b696e67 204661 68 64205264 5c7533033435c2f 625c7530 3033455c 7533033 4364697620636c61 73733d5c 225c225c 7533033 45436f6e 74696e75 6520746f 20666f6c 6c6f7720 5c753030 33437370 616e2064 69723d5c 2272746c 5c225c75 30303345 5c7530336 33375c75 30363331 5c753036 34415c75 30363432 205c7530 3632375c 7530363434 345c7530 634355c 75036 34315c75 303 63437 5c75036 32465c75 303 03343 5c2f7370 616e5c75 303 03345 5c753230 30455c75 30303343 5c2f6469 765c753030334522 2c224469 7374616e 6365223a 7b226d65 74657273 223a3631 33372c22 68746d6c 223a2236 2e315c75 30303236 6e627370 3b6b6d22 7d22244 75726174 696f6e22 3a7b2273 65636f6e 6473223a 3435362c 2268746d 6c223a22 38206d69 6e73227d 2c22506f 696e7422 3a6b2263 6f7264 696e6174 6573223a 5b33392e 38383430 35382c32 312e3432 30323738 2c305d7d 7b22 64657363 72697074 696f6e48 746d6c22 3a22436f 6e74696e7565206f 6e746f20 5c753030 3343625c 7533033 45536563 6f6e6420 52696e67 20526f61 645c7530 3033435c 2f625c75 30303345 222c2244 69737461 6e636522 3a7b226d 65746572 73223a35 3039302c 2268746d 6c223a22 352e315c 75330032 366e6273 703b6b6d 227d2c

响应数据不是有效的UTF-8。例如,它包含一个在"Makkah 24232 3748"中编码为A0的非中断空间,因此它可能是一些ISO拉丁编码。

如果您在请求参数中添加"oe=utf-8",那么您将获得有效的utf-8(并且responseString不是nil,我选中了它:-)。

URL看起来是这样的:

http://maps.google.com/maps/nav?oe=utf-8&q=from:....

最新更新