Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有特殊字符(å;ä;ö;)的NSURL_Php_Iphone_Ios_Nsurl - Fatal编程技术网

Php 带有特殊字符(å;ä;ö;)的NSURL

Php 带有特殊字符(å;ä;ö;)的NSURL,php,iphone,ios,nsurl,Php,Iphone,Ios,Nsurl,我的服务器上有一些以特殊字符命名的图像(å,ä,ö)。我不知道如何转换NSUrl以获得它们: NSString *urlString = [NSString stringWithFormat: @".../Images/%@Image.png", playerName]; NSURL *url = [NSURL URLWithString: [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEnc

我的服务器上有一些以特殊字符命名的图像(å,ä,ö)。我不知道如何转换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/åäöImage.png
我尝试了不同的(StringByAddingPercentescapesusingEncode)和下面的代码,但没有成功:

- (NSString *)URLEncodingOfString:(NSString *)s
{
return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes
(kCFAllocatorDefault, (__bridge CFStringRef)s, NULL, NULL,
 kCFStringEncodingISOLatin1);
 }
非常感谢您的建议,
提前感谢

我认为这完全取决于web服务器使用的编码

由于ISO-Latin-1在您的测试中似乎不起作用,您可以尝试将
kCFStringEncodingISOLatin1
替换为
kCFStringEncodingUTF8

尝试以下方法:

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)unencodedString,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingISOLatin1 );
不幸的是,
stringByAddingPercentEscapesUsingEncoding
方法没有正确编码所有特殊字符

资料来源:

编辑:

你试过了吗

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

NSURL *url = [NSURL URLWithString: [urlString stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]];
注意
NSISOLatin1StringEncoding
而不是
NSUTF8StringEncoding
试试这个

创建NSURL的步骤

 NSURL *url = [[NSURL alloc]initWithString:stringURL];
stringURL是表示URL的字符串。记录日志时,请尝试以下操作

 NSLog("%@",[url absoluteString]);

我遇到这个问题是因为“%C3%89%C3%89”在我试图加载的url中转换为É。这似乎将url转换为所需的格式,以允许我从url下载文件

NSURL *url = [NSURL URLWithString:[[imageURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

什么类型的web服务器承载该文件?阿帕奇?我假设当你把文件名放在URL栏中时,你的web浏览器可以很好地获取它。您使用的是什么web浏览器?(我问客户机和服务器问题的原因是,我们可以调查每个人默认使用的编码。)您好,谢谢您的回复。是的,当我在浏览器中输入它时,效果很好。。而且它也可以在iphone上使用无特殊字符的NSURL。。。它只是NSURL将特殊字符转换为其他导致问题的东西。@BlackMouse嗨,你找到解决方案了吗?@BlackMouse我正面临着同样的问题,这在我的应用程序中占据了大部分时间,任何帮助都将不胜感激!!我刚刚用一些你可以尝试的东西编辑了答案。。我试过了,但仍然得到了错误的url:Images/jag%E4rdator.png(如果名称是jagärdator.png)日志的值是正确的:您正在记录编码的字符串。但是,您的服务器应该理解这个编码的url并找到相应的图像。您的NSData是否正确创建?
NSURL *url = [NSURL URLWithString:[[imageURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];