1

ftpサイトのコンテンツを取得するためにリストを使用していますが、正常に機能しますが、場合によっては、名前に特別な文字が含まれるファイルがあります。たとえば、「Márzo2 2013(8).JPG」、 2番目の文字。リスト関数を呼び出すと、このデータを含むNSDictionaryを取得します(nslogを使用)。

{
  kCFFTPResourceGroup = group;
  kCFFTPResourceLink = "";
  kCFFTPResourceModDate = "2013-03-09 19:08:00 +0000";
  kCFFTPResourceMode = 511;
  kCFFTPResourceName = "M\U00b7rzo 2 2013 (8).JPG";
  kCFFTPResourceOwner = owner;
  kCFFTPResourceSize = 145971;
  kCFFTPResourceType = 8;
}

次にこれを使用します

NSLog(@"%@", [[listaArchivos objectAtIndex:0] valueForKey:(id)kCFFTPResourceName]);

私は得る

M·rzo 2 2013 (8).JPG

2番目の文字に注意してください。「á」である必要があります。多くの関数を試しましたが、文字列を正しく変換できません。誰かが助けてくれることを願っています。

ありがとう。

エゼキエル。

4

2 に答える 2

0

私は問題を見つけました、それは辞書を取得する関数にありました、私は関数のファイルListController.mで、アップルからのsimpleFTPSampleを見てそれを修正することができました-(void)parseListData、私はこの行を変更します

entryToAdd = [self entryByReencodingNameInEntry:(__bridge NSDictionary *) thisEntry encoding:NSASCIIStringEncoding];//NSUTF8StringEncoding

utf8をasciiに変更しましたが、ファイル名を正しく取得できるようになりました。ここでの問題は、ファイルをダウンロードできないことです。

この行では、例の同じファイルから

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode 
    ·
    ·
        bytesRead = [self.networkStream read:buffer maxLength:sizeof(buffer)];
        if (bytesRead < 0) {
            [self stopReceiveWithStatus:@"Network read error"];
        } else if (bytesRead == 0) {
            [self stopReceiveWithStatus:nil];
        } else {
            assert(self.listData != nil);

            // Append the data to our listing buffer.

            [self.listData appendBytes:buffer length:(NSUInteger) bytesRead];

            // Check the listing buffer for any complete entries and update 
            // the UI if we find any.

            [self parseListData];
        }

「Netwok読み取りエラー」が発生し、ファイルストリームがドキュメントフォルダにファイルを作成し、netwokstreamdownが開きますが、読み取ることができません。アドバイスはありますか?

ありがとう。

于 2013-03-11T18:04:11.783 に答える
0

このコードを試していただけますか

NSString *sourcestr = @"ë,à,é,ä all to e,a,e,a";
NSData *temp = [sourcestr dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *outputStr = [[[NSString alloc] initWithData:temp encoding:NSASCIIStringEncoding] autorelease];
NSLog(@"converted: %@", outputStr);

それは私にとってはうまくいきます

于 2013-04-02T09:40:20.460 に答える