1

我正在尝试从 Google 地址解析 JSON,如果 JSON 响应中没有阿拉伯语单词/地址,它可以正常工作。如果 JSON 响应中有阿拉伯语单词

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

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

- (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);
}

谷歌查询获取数据并将 responseString 显示为 NULL

http://maps.google.com/maps/nav?q=from:King%20Khalid%20Tunnel,%20Mecca%2024248%20to:3748,%20%20Al%20Hindawiyyah,%20Mecca%2024232&sensor=true&key=AIzaSyB4A8OGSdi_rsBsYl3_OCap6zAA1wXSRJg

我从 NSLog 复制了这个 NSMutibleData

<7b226e61 6d65223a 2266726f 6d3a4b69 6e67204b 68616c69 64205475 6e6e656c 2c204d65 63636120 32343234 3820746f 3a333732 312c2020 416c2048 696e6461 77697979 61682c20 4d656363 61203234 32333222 2c225374 61747573 223a7b22 636f6465 223a3230 302c2272 65717565 7374223a 22646972 65637469 6f6e7322 7d2c2250 6c616365 6d61726b 223a5b7b 22696422 3a22222c 22616464 72657373 223a224b 696e6720 4b68616c 69642054 756e6e65 6c2c204d 65636361 20536175 64692041 72616269 61222c22 41646472 65737344 65746169 6c73223a 7b22436f 756e7472 79223a7b 22436f75 6e747279 4e616d65 436f6465 223a2253 41222c22 436f756e 7472794e 616d6522 3a225361 75646920 41726162 6961222c 2241646d 696e6973 74726174 69766541 72656122 3a7b2241 646d696e 69737472 61746976 65417265 614e616d 65223a22 4d616b6b 61682050 726f7669 6e636522 2c224c6f 63616c69 7479223a 7b224c6f 63616c69 74794e61 6d65223a 224d65636361222c 2254686f 726f7567 68666172 65223a7b 2254686f 726f7567 68666172 654e616d 65223a22 4b696e67 204b6861 6c696420 54756e6e 656c227d 7d7d7d2c 22416363 75726163 79223a20 367d2c22 506f696e 74223a7b 22636f6f 7264696e 61746573 223a5b33 392e3839 33393935 2c32312e 34323737 31322c30 5d7d7d2c 7b226964 223a2222 2c226164 64726573 73223a22 38343436 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 5c753036 34345c75 30363333 5c753036 33395c75 30363438 5c753036 32465c75 30363441 5c753036 3239222c 224c6f63 616c6974 79223a7b 224c6f63 616c6974 794e616d 65223a22 5c753036 34355c75 30363433 5c753036 3239222c 22446570 656e6465 6e744c6f63616c69 7479223a 7b224465 70656e64 656e744c 6f63616c 6974794e 616d6522 3a225c75 30363237 5c753036 34345c75 30363437 5c753036 34365c75 30363246 5c753036 32375c75 30363438 5c753036 34415c75 30363239 222c2241 64647265 73734c69 6e65223a 5b223834 3436225d 2c22506f 7374616c 436f6465 223a7b22 506f7374 616c436f 64654e75 6d626572 223a2232 34323332 a0333732 31227d7d 7d7d2c22 41636375 72616379 223a2038 7d2c2250 6f696e74 223a7b22 636f6f72 64696e61 74657322 3a5b3339 2e373936 3433342c 32312e34 31363737 302c305d 7d7d5d2c 22446972 65637469 6f6e7322 3a7b2263 6f707972 69676874 7348746d 6c223a22 4d617020 64617461 20a93230 31332047 6f6f676c 65222c22 73756d6d 61727948 746d6c22 3a223134 2e355c75 30303236 6e627370 3b6b6d20 2861626f 75742031 37206d69 6e732922 2c224469 7374616e 6365223a 7b226d65 74657273 223a3134 3532372c 2268746d 6c223a22 31342e35 5c753030 32366e6273703b6b 6d227d2c 22447572 6174696f 6e223a7b 22736563 6f6e6473 223a3939 312c2268 746d6c22 3a223137 206d696e 73227d2c 22526f75 74657322 3a5b7b22 44697374 616e6365 223a7b22 6d657465 7273223a 31343532 372c2268 746d6c22 3a223134 2e355c75 30303236 6e627370 3b6b6d22 7d2c2244 75726174 696f6e22 3a7b2273 65636f6e 6473223a 3939312c 2268746d 6c223a22 3137206d 696e7322 7d2c2273 756d6d61 72794874 6d6c223a 2231342e 355c7530 3032366e 6273703b 6b6d2028 61626f75 74203137 206d696e 7329222c 22537465 7073223a 5b7b2264 65736372 69707469 6f6e4874 6d6c223a 22486561 64205c75 30303343 625c7530 30334573 6f757468 77657374 5c753030 33435c2f 625c7530 30334520 6f6e205c 75303033 43625c75 30303345 4b696e67 204b6861 6c696420 54756e6e 656c5c75 30303343 5c2f625c 75303033 4520746f 77617264 205c7530 30334362 5c753030 33454b69 6e67204b 68616c69 64204272 69646765 5c753030 33435c2f625c7530 30334522 2c224469 7374616e 6365223a 7b226d65 74657273 223a3133 32372c22 68746d6c 223a2231 2e335c75 30303236 6e627370 3b6b6d22 7d2c2244 75726174 696f6e22 3a7b2273 65636f6e 6473223a 36362c22 68746d6c 223a2231 206d696e 227d2c22 506f696e 74223a7b 22636f6f 7264696e 61746573 223a5b33 392e3839 33393935 2c32312e 34323737 31322c30 5d7d7d2c 7b226465 73637269 7074696f 6e48746d 6c223a22 54616b65 20746865 2072616d 70206f6e 746f205c 75303033 43625c75 30303345 4b696e67 20466168 64205264 5c753030 33435c2f 625c7530 3033455c 75303033 43646976 20636c61 73733d5c 225c225c 75303033 45436f6e 74696e75 6520746f 20666f6c 6c6f7720 5c753030 33437370 616e2064 69723d5c 2272746c 5c225c75 30303345 5c753036 33375c75 30363331 5c753036 34415c75 30363432 205c7530 3632375c 75303634 345c7530 3634355c 75303634 345c7530 36343320 5c753036 34315c75 30363437 5c753036 32465c7530303343 5c2f7370 616e5c75 30303345 5c753230 30455c75 30303343 5c2f6469 765c7530 30334522 2c224469 7374616e 6365223a 7b226d65 74657273 223a3631 33372c22 68746d6c 223a2236 2e315c75 30303236 6e627370 3b6b6d22 7d2c2244 75726174 696f6e22 3a7b2273 65636f6e 6473223a 3435362c 2268746d 6c223a22 38206d69 6e73227d 2c22506f 696e7422 3a7b2263 6f6f7264 696e6174 6573223a 5b33392e 38383430 35382c32 312e3432 30323738 2c305d7d 7d2c7b22 64657363 72697074 696f6e48 746d6c22 3a22436f 6e74696e 7565206f 6e746f20 5c753030 3343625c 75303033 45536563 6f6e6420 52696e67 20526f61 645c7530 3033435c 2f625c75 30303345 222c2244 69737461 6e636522 3a7b226d 65746572 73223a35 3039302c 2268746d 6c223a22 352e315c 75303032 366e6273 703b6b6d 227d2c22 44757261 74696f6e 223a7b22 7365636f 6e647322 3a323238 2c226874 6d6c223a 2234206d 696e7322 7d2c2250 6f696e74 223a7b22 636f6f72 64696e6174657322 3a5b3339 2e383334 3631332c 32312e34 32363638 372c305d 7d7d2c7b 22646573 63726970 74696f6e 48746d6c 223a2243 6f6e7469 6e756520 6f6e746f 205c7530 30334362 5c753030 3345416c 20416d69 72204e61 73617220 49626e20 4d617375 645c7530 3033435c 2f625c75 30303345 222c2244 69737461 6e636522 3a7b226d 65746572 73223a37 39312c22 68746d6c 223a2238 30305c75 30303236 6e627370 3b6d227d 2c224475 72617469 6f6e223a 7b227365 636f6e64 73223a37 392c2268 746d6c22 3a223120 6d696e22 7d2c2250 6f696e74 223a7b22 636f6f72 64696e61 74657322 3a5b3339 2e373938 3739362c 32312e34 30393237 312c305d 7d7d2c7b 22646573 63726970 74696f6e 48746d6c 223a2254 75726e20 72696768 74206f6e 746f205c 75303033 43625c75 30303345 416c2041 6e6a616c 5c753030 33435c2f 625c7530 30334522 2c224469 7374616e 6365223a 7b226d65 74657273 223a3238 312c2268 746d6c22 3a223238 305c7530 3032366e 6273703b6d227d2c 22447572 6174696f 6e223a7b 22736563 6f6e6473 223a3337 2c226874 6d6c223a 22333720 73656373 227d2c22 506f696e 74223a7b 22636f6f 7264696e 61746573 223a5b33 392e3739 31353736 2c32312e 34313030 32392c30 5d7d7d2c 7b226465 73637269 7074696f 6e48746d 6c223a22 5475726e 20726967 6874206f 6e746f20 5c753030 3343625c 75303033 454d6173 6a696420 416c2041 6d697220 41686d61 645c7530 3033435c 2f625c75 30303345 222c2244 69737461 6e636522 3a7b226d 65746572 73223a34 35362c22 68746d6c 223a2234 35305c75 30303236 6e627370 3b6d227d 2c224475 72617469 6f6e223a 7b227365 636f6e64 73223a35 362c2268 746d6c22 3a223536 20736563 73227d2c 22506f69 6e74223a 7b22636f 6f726469 6e617465 73223a5b 33392e37 39323236 362c3231 2e343132 3437352c 305d7d7d 2c7b2264 65736372 69707469 6f6e4874 6d6c223a 2254616b 65207468 6520326e 64207269 67687420 6f6e746f 205c7530 30334362 5c7530303345416c 20426173 69726168 5c753030 33435c2f 625c7530 30334522 2c224469 7374616e 6365223a 7b226d65 74657273 223a3231 322c2268 746d6c22 3a223231 305c7530 3032366e 6273703b 6d227d2c 22447572 6174696f 6e223a7b 22736563 6f6e6473 223a3333 2c226874 6d6c223a 22333320 73656373 227d2c22 506f696e 74223a7b 22636f6f 7264696e 61746573 223a5b33 392e3739 34393539 2c32312e 34313530 36352c30 5d7d7d2c 7b226465 73637269 7074696f 6e48746d 6c223a22 54616b65 20746865 20317374 206c6566 745c7530 30334364 69762063 6c617373 3d5c2267 6f6f676c 655f6e6f 74655c22 5c753030 33454465 7374696e 6174696f 6e207769 6c6c2062 65206f6e 20746865 206c6566 745c7530 3033435c 2f646976 5c753030 3345222c 22446973 74616e63 65223a7b 226d6574 65727322 3a323333 2c226874 6d6c223a 22323330 5c753030 32366e62 73703b6d 227d2c22 44757261 74696f6e 223a7b22 7365636f 6e647322 3a33362c 2268746d 6c223a2233362073 65637322 7d2c2250 6f696e74 223a7b22 636f6f72 64696e61 74657322 3a5b3339 2e373936 3739362c 32312e34 31343730 342c305d 7d7d5d2c 22456e64 223a7b22 636f6f72 64696e61 74657322 3a5b3339 2e373936 3536382c 32312e34 31363734 372c305d 7d7d5d7d 7d>

4

1 回答 1

3

响应数据不是有效的 UTF-8。例如,它包含编码为A0“Makkah 24232 3748”的不间断空格,因此它可能是某种 ISO-Latin 编码。

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

然后 URL 如下所示:

http://maps.google.com/maps/nav?oe=utf-8&q=from:....
于 2013-04-01T16:18:04.513 回答