在我的应用程序中,我必须获取服务器返回的一些数据..此数据采用UTF8编码格式..所以我的服务器返回以下字符串:
r \ u00f3做S \ u00edt
在我的代码中,我执行以下操作:
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"%@",responseString);
输出是:
r \ u00f3做S \ u00edt
它应该是
ródosít
我做错了吗?
让我告诉大家,各个系统是如何运作的。
我在mysql数据库上查询..所有表都是UTF8编码..
header('Content-Type: text/html; charset=utf-8');
//THE CONNECTION PART GOES HERE
mysql_query("SET NAMES 'UTF8'");
mysql_query('SET character_set_client=UTF8');
mysql_query('SET character_set_results=UTF8');
mysql_query('SET character_set_connection=UTF8');
$query = "select * from table";
$out = mysql_query($query);
$rows = array();
while($reg = mysql_fetch_assoc($out))
{
$rows[] = $reg;
}
print json_encode($rows);
然后它在浏览器上打印以下内容:
[{ “类标识码”: “8”, “姓名”:“R \ u00f3 PIR \ u00e1" , “local_id” 中: “10”},{ “类标识码”: “9”, “姓名”:“R \ u00f3 do S \ u00edtio“,”local_id“:”8“}]
答案 0 :(得分:1)
你确定responseData是UTF8格式吗?尝试十六进制转储responseData并检查字节。
我应该看起来像:
0x72 0xc3 0xb3 0x20 0x64 0x6f 0x20 0x53 0xc3 0xad 0x74 'r'''''''''''''''''''''''
我假设'ó'== 0x00f3 unicode point和'í'== 0x00ed unicode point。
我的猜测是响应数据实际上是:
“r \ u00f3 do S \ u00edt”
在这种情况下,我会看看responseData的生成位置,我的猜测是从unicode字符串到utfstring的对话不正确或者源数据不正确。 '\ uxxxx'看起来像是某种语言字符串文字的某种unicode点字符串编码?
答案 1 :(得分:0)
尝试
NSString *responseString = [NSString stringWithFormat: @"%@", [responseData bytes]];