如何在Xcode中将utf-8编码的字符串转换为土耳其语字符?

时间:2014-01-08 14:40:36

标签: xcode encoding utf-8

我在php中有一个webservis,我在utf-8中编码了这样的字符串:

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

我从xcode中的webservis获取此字符串: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 ......

...谢谢

1 个答案:

答案 0 :(得分:0)

当您使用NSUTF8StringEncoding(这是您应该使用的)时,iOS正确解码\ u00dd。那是LATIN CAPITAL LETTER Y WITH ACUTE。你想要的字母是LATIN CAPITAL LETTER I WITH DOT ABOVE,即\ u0130。

这表明问题出在你的php端。如果我不得不猜测,我怀疑源文件中的İ本身并不是php期望的编码。根据编辑器使用的编码,您可能需要将“从”编码传递到mb_convert_encoding

我强烈建议您尽可能完全使用UTF-8,并且完全避免创建CP1254(土耳其语)字符串。 UTF-8能够编码您需要的所有字符。在这种情况下,您可以完全避免使用mb_convert_encoding