【发布时间】:2012-02-19 01:43:23
【问题描述】:
作为对 HTTP Post 的响应的一部分,我在字符串的中间得到了空字符。结果,即使字符串中有更多数据,内容也只会打印到空字符。下面是说明问题的示例代码
NSString *testString= @"v1db1���������¿¿sssss"; ->this line shows the null character warning
NSInteger stringlength = [testString length];
NSLog(@"String Length:%ld",stringlength);
NSLog(@"String Value:%@",testString);
注意:测试字符串包含一个带问号的空字符。出于某种原因,如果我复制确切的字符串,我将无法保存帖子。
第一行在 Xcode 中显示警告“Null character(s) reserved in string literal”。
这个程序的输出是
String Length:21
String Value:v1db1
解决此问题的正确方法是什么?我正在考虑扫描 NSString 以查找任何空字符并将其删除。我得到空字符的原因可能是什么?
【问题讨论】:
-
如何在代码中从 HTTP Post 响应中获取 NSString?这很可能是你的问题的根源,你不应该首先创建一个带有 null 的 NSString。
-
@CRD 谢谢。此数据由服务器返回,未插入 null。我使用 HTTP 标头中的内容类型来确定响应数据的编码。如果有帮助,我将 **bold**(CFReadStreamCreateForHTTPRequest) 用于 http 请求。不知何故,读取的数据在两者之间包含空字符。即使是服务器的问题,也希望客户端处理它。我发现一个线程正在讨论类似的问题link。
-
将您实际使用的代码添加到您的问题中。很有可能他们将读取的字节转换为 NSString 的方式是导致问题的原因。在人们看到您的实际代码之前,他们几乎没有机会帮助您。您还可以查看以十六进制打印实际读取的字节,以查看来自服务器的内容。
标签: objective-c xcode cocoa