Php 带有特殊字符(å;ä;ö;)的NSURL
我的服务器上有一些以特殊字符命名的图像(å,ä,ö)。我不知道如何转换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
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]];