2013-03-16 72 views
0

我使用黑色浣熊類來進行ftp會話。得到一個FTP目錄的內容是這樣來自FTP目錄的特殊字符

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

和寫入的NSMutableArray

我有對FTP共享的特殊字符一些像這樣的文件夾:

「海諾 - 麻省理工學院Freundlichen的Gr \ U00b8ssen (Deluxe Edition)(2013) - 320「

如何轉換字符串?

從來就try'ed如下:

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

但返回零...

的NSLog:

[7344:C07]轉換代碼名稱爲海諾 - 麻省理工學院Freundlichen GR ssen(豪華版)(2013) - 320 [7344:c07]編碼名稱爲(null)

回答

1

可以在源代碼中看到CFFTPStream.c CFFTPStream用「Mac OS Roman」編碼解釋FTP服務器上的所有文件名。您的FTP服務器似乎使用Windows編碼的文件名,因此在CFFTPStream中錯誤地將其轉換爲Unicode。

但是你可以用

NSString *uncodedName = [file objectForKey:(id)kCFFTPResourceName]; 
NSData *data = [uncodedName dataUsingEncoding:NSMacOSRomanStringEncoding]; 
arrayHelper.FTPFileName = [[NSString alloc] initWithData:data encoding:NSWindowsCP1252StringEncoding]; 
+0

我回答說,即使我不能忍受海諾音樂:-) – 2013-03-16 14:48:56

+0

THX了很多問題,相反的過程!完美的作品! ...但是我的下一個問題是將字符串寫回nsmutablearray(用於瀏覽ftp共享)返回給我一個「Heino - Mit Freundlichen Gr \ u00fcssen(Deluxe Edition)(2013) - 320」..... me但是他在新專輯裏覆蓋搖滾樂隊:-) – HugoBoss 2013-03-16 16:25:48

+0

@HugoBoss:NSLog或調試器輸出通常使用轉義序列打印特殊字符,'\ U00fc' *爲*「ü」。 – 2013-03-16 16:28:07