2014-01-08 36 views
0

我有一個PHP webservis和我像這樣編碼爲UTF-8的字符串:如何將UTF-8編碼的字符串轉換爲Xcode中的土耳其字符?

$str_output = mb_convert_encoding("MATEMATİK", "UTF-8"); 
$data_array = array('name' => $str_output); 
echo json_encode($data_array); 

我從webservis在Xcode這個字符串:MATEMAT \ u00ddK

我無法把這個字符串土耳其字符串。

我json_dictionary是這樣

2014-01-08 16:17:22.274 test_app[6432:70b] { 
name = "MATEMAT\U00ddK"; 
} 

我試過這種編碼方法,但它並沒有給我

NSString * name = [json_dictionary objectForKey:@"name"]; 
NSString * correctString = [NSString stringWithCString:[baslik cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSWindowsCP1254StringEncoding]; 

null

如果我使用NSUTF8StringEncoding

工作
MATEMATÝK 

而且我試過NSISOLatin1StringEncoding,NSISOLatin2StringEncoding ...

謝謝...

+0

檢查此鏈接的第一個答案,它與我合作: [1]:http://stackoverflow.com/questions/14809188/turkish-characters-ios – awsleiman

回答

0

當您使用NSUTF8StringEncoding(這是你應該使用什麼)的iOS正確解碼\ u00dd。那是LATIN CAPITAL LETTER Y WITH ACUTE。你想要的信是LATIN CAPITAL LETTER I WITH DOT ABOVE,這是\ u0130。

這表明問題出在你的php方面。如果我不得不猜測,我會懷疑源文件中的İ本身並不在php期望的編碼中。您可能需要傳遞「from」編碼至mb_convert_encoding,具體取決於編輯器使用的編碼。

我強烈建議您儘可能使用UTF-8,並儘量避免創建CP1254(土耳其語)字符串。 UTF-8能夠編碼你需要的所有字符。在這種情況下,您可能完全避免了mb_convert_encoding