Chinaunix首页 | 论坛 | 博客
  • 博客访问: 697489
  • 博文数量: 260
  • 博客积分: 7033
  • 博客等级: 少将
  • 技术积分: 2633
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-13 23:15
文章分类

全部博文(260)

文章存档

2012年(2)

2011年(41)

2010年(78)

2009年(139)

我的朋友

分类:

2010-10-16 13:49:03

某银行iPhone客户端项目,
在客户端发送密码 "11&11111"到服务器,服务器那边显示收到的密码为"11"。

但是在html测试页中输入同样的密码字符串,服务器端却可以得到正确的字符。

解决方法,使用firefox + Tamper Data + xampp + php,在本地做了个测试,发现标准的http浏览器在发送&字符的使用,实际上是发送的%26。

OC本身也内置一个方法: stringByAddingPercentEscapesUsingEncoding: ,但是这个方法只会对百分号%这个符号进行特殊处理。

原理:

解决方法:



- (NSString *) urlEncodeValue:(NSString *)str
{
    NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL,
    CFSTR(":/?#[]@!$&’()*+,;=\""), kCFStringEncodingUTF8);
    return [result autorelease];
}


NSString *password = @"!@#$%^&*";
password = [self urlEncodeValue: password];


阅读(441) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~