2

サーバーに特殊文字 (å、ä、ö) で名前を付けた画像がいくつかあります。NSUrl を変換して取得する方法がわかりません。

    NSString *urlString = [NSString stringWithFormat: @".../Images/%@Image.png", playerName]; 

    NSURL *url = [NSURL URLWithString: [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSLog(@"url:%@", url);

    //Get the image and assign it to the player
    NSData *imageData = [NSData dataWithContentsOfURL:url];
    UIImage *image = [UIImage imageWithData:imageData];

上記の例のログ ("playerName" = åäö の場合):

.../Images/%C3%A5%C3%A4%C3%B6Image.png

しかし、私はそれが必要です:

.../Images/åäöImage.png

別の (stringByAddingPercentEscapesUsingEncoding) と以下のコードを試しましたが成功しませんでした:

- (NSString *)URLEncodingOfString:(NSString *)s
{
return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes
(kCFAllocatorDefault, (__bridge CFStringRef)s, NULL, NULL,
 kCFStringEncodingISOLatin1);
 }

どんなアドバイスでも大歓迎です、事前に感謝します

4

4 に答える 4

2

Webサーバーが使用しているエンコーディングに完全に依存すると思います。

あなたのテストでは ISO-Latin-1 が機能していないように見えるので、 に置き換えkCFStringEncodingISOLatin1てみてくださいkCFStringEncodingUTF8

于 2012-04-11T13:03:24.707 に答える
1

これを試して :

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)unencodedString,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingISOLatin1 );

残念ながら、このstringByAddingPercentEscapesUsingEncodingメソッドはすべての特殊文字を適切にエンコードするわけではありません。

出典: Objective-C、iPhone などで NSString を実際に URL エンコードする方法

編集:

やってみました

NSString *urlString = [NSString stringWithFormat: @".../Images/%@Image.png", playerName]; 

NSURL *url = [NSURL URLWithString: [urlString stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]];

NSISOLatin1StringEncodingの代わりに注意してくださいNSUTF8StringEncoding

于 2012-04-11T13:04:11.130 に答える
0

ロードしようとしたURL内でÉÉに変換される「%C3%89%C3%89」が原因でこの問題が発生しました。これにより、URLが目的の形式に変換され、URLからファイルをダウンロードできるようになりました。

NSURL *url = [NSURL URLWithString:[[imageURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
于 2012-12-31T04:08:37.620 に答える
0

これを試して

NSURL を作成するには

 NSURL *url = [[NSURL alloc]initWithString:stringURL];

stringURL は URL を表す文字列です。ロギング中に、これを試してください

 NSLog("%@",[url absoluteString]);
于 2012-04-11T15:13:21.640 に答える