1

NSoutputstreamを使用して文字列を送信しようとしていますが、dataWithContentsOfURLを使用してエンコードを正しく行うことができないようです。

actionHeroライブラリでnodejsTCPサーバーを使用しています。

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

ハンドルストリームイベントメソッドからnullstreamErrorを取得します

4

2 に答える 2

1

の内容がわからresponseないので、NSUTF8StringEncodingが機能しない理由について具体的な答えを出すことはできません。ただし、一般的に言えば、コンテンツにUTF-8と互換性のないバイトシーケンスがある場合は、を呼び出すとnilになります-dataUsingEncoding:

Mike Ashのブログ(「フォールバック」のセクションを参照)を読んで学んだ戦略があり、それはあなたのような状況で非常に役立ちました。

簡単にまとめると、最初にを使用してみてくださいNSUTF8StringEncoding。それでも問題が解決しない場合は、を使用してみてくださいNSISOLatin1StringEncoding。それでも問題が解決しない場合は、を使用してみてくださいNSMacOSRomanStringEncoding。マイクのブログには、この理由があります。

于 2013-02-22T18:09:19.830 に答える
1

私自身の質問に対する答えを見つけました。問題は、iOSアプリケーションによって提供されていない/nを検索するactionHeroのondataメソッドにあることが判明しました。\nとその罰金を追加しました

于 2013-02-22T18:20:36.490 に答える