1

我试图使用 NSoutputstream 发送一个字符串,但是我似乎无法正确编码,使用 dataWithContentsOfURL 有效

我正在使用带有 actionHero 库的 nodejs TCP 服务器。

它使用 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]]);
}

我从句柄流事件方法中得到一个空流错误

4

2 回答 2

1

找到了我自己的问题的答案。原来问题出在 actionHero 的 on data 方法中,它查找 ios 应用程序未提供的 /n。附加了一个 \n 并且现在很好

于 2013-02-22T18:20:36.490 回答
1

不知道 的内容response,我无法具体回答为什么 NSUTF8StringEncoding 不能使用它。但是,一般来说,如果您的内容中存在与 UTF-8 不兼容的字节序列,那么当您调用-dataUsingEncoding:.

我从阅读Mike Ash 的博客中学到了一个策略(在“Fallbacks”部分下查看),它在像你这样的情况下对我很有帮助。

简单总结一下,首先尝试使用NSUTF8StringEncoding. 如果这不起作用,请尝试使用NSISOLatin1StringEncoding. 如果这不起作用,请尝试使用NSMacOSRomanStringEncoding. 迈克的博客有这样做的理由。

于 2013-02-22T18:09:19.830 回答