URL乱码问题

原创 2015年07月10日 09:04:53
01.// 将URL编码
02.- (NSString *)encodeToPercentEscapeString: (NSString *) input
03.{
04.NSString *outputStr = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
05.(CFStringRef)input,
06.NULL,
07.(CFStringRef)@"!*'();:@&=+$,/?%#[]",
08.kCFStringEncodingUTF8));
09.return outputStr;
10.}
11. 
12.// 将URL解码
13.- (NSString *)decodeFromPercentEscapeString: (NSString *) input
14.{
15.NSMutableString *outputStr = [NSMutableString stringWithString:input];
16.[outputStr replaceOccurrencesOfString:@"+"
17.withString:@" "
18.options:NSLiteralSearch
19.range:NSMakeRange(0, [outputStr length])];
20. 
21.return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
22.}

 

演示一下上面的封装函数:

 

01.NSString * testUrl = @"http://search.google.com?key<;a href="http://www.it165.net/edu/ebg/" target="_blank" class="keylink">word</a>s=($# it's {a*123})00!*'();:@&=+$,/?%#[]";
02.NSLog(@"original: %@", testUrl);
03. 
04. 
05.NSString * encodeStr = [self encodeToPercentEscapeString:testUrl];
06.NSLog(@"encoded: %@", encodeStr);
07. 
08.NSString * encodeStr2 = [testUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
09.NSLog(@"encoded2:%@", encodeStr2);
10. 
11.NSString * decodeStr = [self decodeFromPercentEscapeString:encodeStr];
12.NSLog(@"decoded: %@", decodeStr);


 

 

结果如下:

>> original: http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[]
>> encoded: http%3A%2F%2Fsearch.google.com%3Fkeywords%3D%28%24%23%20it%27s%20%7Ba%2A123%7D%2900%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D
>> encoded2: http://search.google.com?keywords=($%23%20it's%20%7Ba*123%7D)00!*'();:@&=+$,/?%25%23%5B%5D
>> decoded: http://search.google.com?keywords=($# it's {a*123})00!*'();:@&=+$,/?%#[]

 

 

 

演示一下自带的URL转码测试代码:

 

01.NSString* string1 = @"https://www.cloudsafe.com/文件夹";
02. 
03.NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
04. 
05.NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
06. 
07.NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
08. 
09.NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
10. 
11.NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
12. 
13.NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
14. 
15. 
16.NSLog(@"原始数据%@",string1);
17.NSLog(@"一层编码%@",string2);
18.NSLog(@"两层编码%@",string3);
19.NSLog(@"一层编码的一层解码%@",string4);
20.NSLog(@"两层编码的一层解码%@",string5);
21.NSLog(@"一层编码的两层解码%@",string6);
22.NSLog(@"两层编码的两层解码%@",string7);


 


打印结果:

 

2014-06-10 15:00:02.425 DareWayApp[7400:671651] 原始数据https://www.cloudsafe.com/文件夹

2014-06-10 15:00:02.426 DareWayApp[7400:671651] 一层编码https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9

2014-06-10 15:00:02.427 DareWayApp[7400:671651] 两层编码https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9

2014-06-10 15:00:02.427 DareWayApp[7400:671651] 一层编码的一层解码https://www.cloudsafe.com/文件夹

2014-06-10 15:00:02.427 DareWayApp[7400:671651] 两层编码的一层解码https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9

2014-06-10 15:00:02.427 DareWayApp[7400:671651] 一层编码的两层解码https://www.cloudsafe.com/文件夹

2014-06-10 15:00:02.427 DareWayApp[7400:671651] 两层编码的两层解码https://www.cloudsafe.com/文件夹

 

如果服务器用的是GBK编码,只要把上面的UTF改成下面的encoding就可以了:

 

 

1.NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
2.urlString = [urlString stringByReplacingPercentEscapesUsingEncoding:gbkEncoding];
版权声明:本文为博主原创文章,未经博主允许不得转载。

url传递中文乱码解决

js合成url时,如果参数是中文,传到struts2中会乱码,解决办法如下: 1.js文件中使用encodeURI()方法(必须套两层)。 login_name = encodeURI(encod...
  • dcchencsdn
  • dcchencsdn
  • 2016年05月24日 17:55
  • 1489

java中文乱码解决之道(八)-----解决URL中文乱码问题

我们主要通过两种形式提交向服务器发送请求:URL、表单。而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面。通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了。不...
  • fangquan1980
  • fangquan1980
  • 2016年01月25日 11:07
  • 1542

url传中文在IE中出现乱码问题处理

今天在测试网站搜索功能的时候发现
  • sp1203
  • sp1203
  • 2014年10月13日 13:58
  • 1999

asp.net中URL参数传值中文乱码的三种解决办法

在做Asp.Net开发的时候,参数传递中文时,经常会遇到页面乱码的问题,下面是在网上收集的相关资料,请大家参考: 解决的方法一般有3种: 1.设置web.config文件 ....
  • lijian260
  • lijian260
  • 2015年10月15日 10:15
  • 2340

url 编码 js url传参中文乱码解决方案

url 编码 js url传参中文乱码解决方案
  • u012726702
  • u012726702
  • 2016年06月27日 20:47
  • 349

java中文乱码解决之道(八)-----解决URL中文乱码问题

我们主要通过两种形式提交向服务器发送请求:URL、表单。而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面。通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了。不...
  • chenssy
  • chenssy
  • 2015年01月21日 09:13
  • 26855

linux下 url中文参数乱码问题

情况是这样的,这里只有后台,是通过http协议发送url,我这边拦截解析。不过总是出现乱码。开始的时候 改为 nickname = new String(req.getParameter("nic...
  • luccs624061082
  • luccs624061082
  • 2014年06月25日 23:04
  • 570

关于JAVA中URL传递中文参数,取值是乱码的解决办法

简单的方式(2.在后台通过解码来接收该中文参数 ) : 在url里面的中文不受你上面设置的编码的限制,它是unicode格式传输的,跟服务器的编码相关,如果你把服务器的编码设置为utf-8或者gb...
  • q1054261752
  • q1054261752
  • 2016年09月06日 21:35
  • 4718

JSP内置对象(包括request和response)以及解决url传中文参数出现乱码问题

一、内置对象简介 1、JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。例如:out对象 2、JSP九大内置对象: out,request,respo...
  • u014038534
  • u014038534
  • 2016年01月17日 17:12
  • 1043

解决get方法传递URL参数中文乱码和解决tomcat下中文乱码问题

应用一:解决tomcat下中文乱码问题(先来个简单的)  在tomcat下,我们通常这样来解决中文乱码问题:   过滤器代码: Java代码   package filter...
  • cuker919
  • cuker919
  • 2015年07月31日 16:48
  • 6529
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:URL乱码问题
举报原因:
原因补充:

(最多只允许输入30个字)