我在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 ......
...谢谢
答案 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
。