如何解决用目标C显示UTF8字符时出现问题
| 在我的应用程序中,我必须获取服务器返回的一些数据。此数据采用UTF8编码格式。因此,我的服务器返回以下字符串: r \\ u00f3做S \\ u00edt 在我的代码中,我执行以下操作:NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@\"%@\",responseString);
输出为:
r \\ u00f3做S \\ u00edt
它应该是
做吧
难道我做错了什么?
让我向大家展示整个系统的工作原理。
我在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);
然后在浏览器上显示以下内容:
[{\“ class_id \”:\“ 8 \”,\“ name \”:\“ r \\ u00f3
pir \\ u00e1 \“,\” local_id \“:\” 10 \“},{\” class_id \“:\” 9 \“,\” name \“:\” r \\ u00f3
做S \\ u00edtio \“,\” local_id \“:\” 8 \“}]
解决方法
您确定responseData为UTF8格式吗?尝试十六进制转储responseData并检查字节。
我应该看起来像:
0x72 0xc3 0xb3 0x20 0x64 0x6f 0x20 0x53 0xc3 0xad 0x74
\'r \'\'ó\'\'\'\'d \'\'o \'\'\'\'S \'\'í\'\'t \'
我假设\'ó\'== 0x00f3 unicode点和\'í\'== 0x00ed unicode点。
我的猜测是响应数据实际读取为:
\“ r \\ u00f3做S \\ u00edt \”
在这种情况下,我将查看在哪里生成responseData,我的猜测是从Unicode字符串到utfstring的对话不正确或源数据不正确。 \'\\ uxxxx \'看起来像是某种语言字符串文字的unicode点字符串编码?
, 尝试
NSString *responseString = [NSString stringWithFormat: @\"%@\",[responseData bytes]];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。