1

我正在使用列表来获取 ftp 站点的内容,它工作正常,但在某些情况下,我的文件名称中包含特殊字符,例如:“Márzo 2 2013 (8).JPG”,第二个字符。当我调用列表函数时,你会得到一个带有这些数据的 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

注意第二个字符,它应该是“á”,我尝试了很多功能,但我无法正确转换我的字符串,希望有人能提供帮助

谢谢。

以西结。

4

2 回答 2

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 回答
0

我发现了问题,它在获取字典的函数上,我可以通过查看来自苹果的 simpleFTPSample 来修复它,在函数 - (void)parseListData 的文件 ListController.m 中,我更改了这一行

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

我用 ascii 更改了 utf8,现在我可以正确获取文件名。现在的问题是文件无法下载。

在这一行中,来自示例的同一文件

- (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 回答