我的iPhone应用程序或Xcode有问题。 我目前正在尝试将我从Google翻译获得的字符串转换为支持西里尔字母的字符串格式。到目前为止,我尝试了很多字符串编码,但他们都没有正常工作。XCode,字符串编码,西里尔文字母
这里是我到目前为止的代码:
NSString *word = @"hello";
NSString *urlPath = [NSString stringWithFormat:@"/translate_a/t?client=t&text=%@&langpair=en|ru",word];
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:@"translate.google.com" path:urlPath];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"GET"];
NSURLResponse *response;
NSError *error;
NSData *data;
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *result = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@", result);
而且这是在控制台上的结果:
[
[
[
"ÐÒÉ×ÅÔ",
"hello",
"privet",
""
]
],
[
[
"verb",
[
"ÚÄÏÒÏ×ÁÔØÓÑ",
"Ú×ÁÔØ",
"ÏËÌÉËÁÔØ"
],
[
[
"ÚÄÏÒÏ×ÁÔØÓÑ",
[
"greet",
"hello",
"salute",
"hullo",
"hallo",
"halloa"
],
,
0.0050860695
],
[
"Ú×ÁÔØ",
[
"call",
"invite",
"shout",
"hail",
"hallo",
"hello"
],
,
2.7109536e-05
],
[
"ÏËÌÉËÁÔØ",
[
"hail",
"holler",
"call",
"challenge",
"speak",
"hello"
],
,
2.7109536e-05
]
],
"hello",
2
],
[
"noun",
[
"ÐÒÉ×ÅÔÓÔ×ÉÅ",
"ÐÒÉ×ÅÔÓÔ×ÅÎÎÙÊ ×ÏÚÇÌÁÓ",
"×ÏÚÇÌÁÓ ÕÄÉ×ÌÅÎÉÑ"
],
[
[
"ÐÒÉ×ÅÔÓÔ×ÉÅ",
[
"greeting",
"welcome",
"salute",
"hail",
"salutation",
"hello"
],
,
0.0014801305
],
[
"ÐÒÉ×ÅÔÓÔ×ÅÎÎÙÊ ×ÏÚÇÌÁÓ",
[
"hallo",
"halloa",
"viva",
"hello"
],
,
2.7536449e-05
],
[
"×ÏÚÇÌÁÓ ÕÄÉ×ÌÅÎÉÑ",
[
"hallo",
"halloa",
"hello"
],
,
2.7109536e-05
]
],
"hello",
1
]
],
"en",
,
[
[
"ÐÒÉ×ÅÔ",
[
1
],
true,
false,
1000,
0,
1,
0
]
],
[
[
"hello",
1,
[
[
"ÐÒÉ×ÅÔ",
1000,
true,
false
],
[
"úÄÒÁ×ÓÔ×ÕÊÔÅ",
0,
true,
false
],
[
"Hello",
0,
true,
false
],
[
"úÄÒÁ×ÓÔ×ÕÊ",
0,
true,
false
],
[
"ÈÅÌÌÏ",
0,
true,
false
]
],
[
[
0,
5
]
],
"hello"
]
],
,
[
,
"Hello!",
[
10
],
,
true
],
[
],
2
]
所以我希望你明白我的问题。我希望字符串是“привет”而不是“ÐÒÉ×ÅÔ”。 当我试图将数据编码为其他格式时,我通常会得到一个“(null)”结果给我的字符串,例如NSUTF8StringEncoding。
感谢那些工作就好了!但现在我有另一个问题。 我想用“componentsSeparatedByString:”将字符串拆分成一个数组,然后再将这些字母转换成奇怪的符号。例如,“привет”是“\ U043f \ U0440 \ U0438 \ U0432 \ U0435 \ U0442”。我现在应该怎么做? – Gustl007
@ Gustl007:这只是数组的NSLog打印非ASCII字符的方式,您不必担心。 - 但是响应看起来像JSON,所以正确的方法是使用NSJSONSerialization(而不是componentsSeparatedByString)。但是JSON似乎是无效的,所以这是行不通的。 –
工作正常!非常感谢! 我对JSON并不十分了解,但是如果您认为它无效,那么我现在不会将自己与它混淆。 – Gustl007