NSstream写编码问题
问题描述:
我试着发送使用NSoutputstream一个字符串,但我似乎无法得到正确的编码,使用dataWithContentsOfURL工程,并使用与actionHero库中的TCP的NodeJS服务器NSstream写编码问题
IM。
它使用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
答
找到了我自己的问题的答案。事实证明,问题出在actionHero的数据方法中,它寻找/ n,这是ios应用程序不提供的。附加一个\ n和它的罚款现在
答
不知道的response
的内容,我不能给你一个明确的答案,为什么NSUTF8StringEncoding不使用它。但是,一般来说,如果您的内容中有一个与UTF-8不兼容的字节序列,当您拨打-dataUsingEncoding:
时,您将得到零。
我从阅读Mike Ash's blog(请参阅“回退”部分)中学到了一种策略,在诸如您的情况下,它给了我很好的服务。
要简要总结一下,首先尝试使用NSUTF8StringEncoding
。如果这不起作用,请尝试使用NSISOLatin1StringEncoding
。如果这不起作用,请尝试使用NSMacOSRomanStringEncoding
。 Mike的博客有这个理由。
请关闭...并且你能标记这个'actionhero' – Evan 2014-05-10 06:34:51