我正在使用nodejs TCP服务器和actionHero库。
它使用netcat和telnet工作。
- (IBAction)sendText:(id)sender {
NSString *response = [NSString stringWithFormat:@"%@", [_sendTextField.text stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
NSLog(@"writing %@",response);
///////////////////////////// this line works/////////////////////////////////////////////////////
// NSData *data = [[NSData alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]]];
///////////////////////////// this line doesnt work/////////////////////////////////////////////////////
NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
//%u returns a non zero value
NSLog(@"%u",[outputStream write:[data bytes] maxLength:[data length]]);
}我从处理流事件方法中得到一个空streamError
发布于 2013-02-23 02:20:36
找到了我自己问题的答案。原来问题出在actionHero的on data方法中,该方法查找ios应用程序没有提供的/n。附加了一个\n,现在它很好
发布于 2013-02-23 02:09:20
由于不知道response的内容,我无法给您一个明确的答案,说明为什么NSUTF8StringEncoding不能使用它。但是,一般来说,如果您的内容中有一个字节序列与UTF-8不兼容,那么当您调用-dataUsingEncoding:时,您将得到nil。
有一个我从阅读Mike Ash's blog中学到的策略(请查看“后备”部分),它在像您这样的情况下很好地服务于我。
简单地总结一下,首先尝试使用NSUTF8StringEncoding。如果这不起作用,可以尝试使用NSISOLatin1StringEncoding。如果这不起作用,可以尝试使用NSMacOSRomanStringEncoding。Mike的博客有这样的理由。
https://stackoverflow.com/questions/15029685
复制相似问题