2013-02-22 50 views
1

我試着發送使用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

回答

1

找到了我自己的問題的答案。事實證明,問題出在actionHero的數據方法中,它尋找/ n,這是ios應用程序不提供的。附加一個\ n和它的罰款現在

+0

請關閉...並且你能標記這個'actionhero' – Evan 2014-05-10 06:34:51

1

不知道的response的內容,我不能給你一個明確的答案,爲什麼NSUTF8StringEncoding不使用它。但是,一般來說,如果您的內容中有一個與UTF-8不兼容的字節序列,當您撥打-dataUsingEncoding:時,您將得到零。

我從閱讀Mike Ash's blog(請參閱「回退」部分)中學到了一種策略,在諸如您的情況下,它給了我很好的服務。

要簡要總結一下,首先嚐試使用NSUTF8StringEncoding。如果這不起作用,請嘗試使用NSISOLatin1StringEncoding。如果這不起作用,請嘗試使用NSMacOSRomanStringEncoding。 Mike的博客有這個理由。