0

私は ftp セッションに black raccoon クラスを使用しています。このようなFTPディレクトリのコンテンツを取得する

arrayHelper.FTPFileName = [file objectForKey:(id)kCFFTPResourceName]

nsmutablearray への書き込み

ftp 共有に、次のような特殊文字を含むフォルダーがいくつかあります。

「Heino - Mit Freundlichen Gr\U00b8ssen (Deluxe Edition) (2013) - 320」

文字列を変換するにはどうすればよいですか?

私は次のことを試しました:

NSString *uncodedName = [file objectForKey:(id)kCFFTPResourceName];
        NSLog(@"Uncoded Name is %@",uncodedName);
        arrayHelper.FTPFileName = [NSString stringWithCString:[uncodedName cStringUsingEncoding:NSUTF8StringEncoding]
                                                     encoding:NSNonLossyASCIIStringEncoding];
        NSLog(@"Coded Name is %@",arrayHelper.FTPFileName);

しかし、nilを返します...

NSログ:

[7344:c07] Uncoded Name is Heino - Mit Freundlichen Gr¸ssen (Deluxe Edition) (2013) - 320 [7344:c07] Coded Name is (null)

4

1 に答える 1

1

「Mac OS Roman」エンコーディングで FTP サーバー上のすべてのファイル名 を解釈するCFFTPStream.cのソース コードを見ることができます。CFFTPStreamあなたの FTP サーバーは Windows でエンコードされたファイル名を使用しているようですCFFTPStream

しかし、プロセスを逆にすることができます

NSString *uncodedName = [file objectForKey:(id)kCFFTPResourceName];
NSData *data = [uncodedName dataUsingEncoding:NSMacOSRomanStringEncoding];
arrayHelper.FTPFileName = [[NSString alloc] initWithData:data encoding:NSWindowsCP1252StringEncoding];
于 2013-03-16T14:46:55.043 に答える