このコードを使用して SMB パスをマウントします
urlStringOfVolumeToMount = [urlStringOfVolumeToMount stringByAddingPercentEscapesUsingEncoding:NSMacOSRomanStringEncoding];
NSURL *urlOfVolumeToMount = [NSURL URLWithString:urlStringOfVolumeToMount];
FSVolumeRefNum returnRefNum;
FSMountServerVolumeSync( (CFURLRef)urlOfVolumeToMount, NULL, NULL, NULL, &returnRefNum, 0L);
次に、いくつかのパスのコンテンツを取得します:
NSMutableArray *content = (NSMutableArray *)[[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];
私の問題は、特別な文字を含む「コンテンツ」配列のすべてのパス(たとえばü)で、エンコードされた2文字が得られることです:üはu¨になります
を使用してバイトをログに記録する場合:
[contentItem dataUsingEncoding:NSUTF8StringEncoding];
それは私に与えます:u(75)と¨(cc88)である75cc88
私が期待したのは、utf-8 でエンコードされたü char です。バイト単位では、c3bc である必要があります
ISOLatin1 エンコーディング、MacOSRoman を使用してパスを変換しようとしましたが、コンテンツ パスに ü の代わりに 2 つの個別の文字が既に含まれている限り、どの変換でも 2 つの文字がエンコードされます...
誰かが助けてくれるなら、ありがとう
私の設定: フランス語にローカライズされ、Snow Leopard を使用しています。