我的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