首页 新闻 会员 周边 捐助

在iOS中进行utf8转码的时候怎么把等号也转码

0
悬赏园豆:20 [已解决问题] 解决于 2015-07-13 10:49

字符串本来已经经过了base64编码,所以没有中文也没有什么特殊字符,应公司要求需要再进行utf8编码,虽然我觉得没什么必要,但是这件事还是要做,然后问题来了

因为没有特殊字符,经过utf8编码之后的字符串和原来完全一样,连后面的连个等号都没有被编码

在java中或者网页端进行utf8编码之后,等号都会被编码,但是iOS里就不变,这到底是什么原因?

下面是代码

    NSString *str=@"cHJpY2U9MjMuNTYmYWNjTm89MjgzN==";

    NSString *transString = [NSString stringWithString:[str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSLog(@"%@",transString);

输出结果

2015-06-25 09:36:26.467 Test[719:118413] cHJpY2U9MjMuNTYmYWNjTm89MjgzN==

原封不动!

而在网上用在线编码得到的结果:

cHJpY2U9MjMuNTYmYWNjTm89MjgzN%3d%3d

这里的等号就被编码了,这是什么原因?都是utf8编码为何结果不一样?

如何才能在iOS中实现这种效果?

拜托大家帮帮忙!

电蚊拍的主页 电蚊拍 | 初学一级 | 园豆:99
提问于:2015-06-25 09:46
< >
分享
最佳答案
0

你把 utf8 同 url encode 搞混淆了。

收获园豆:20
Launcher | 高人七级 |园豆:45050 | 2015-06-25 09:51

url encode也是一种编码方式吗?怎样才能在iOS中用url encode?

电蚊拍 | 园豆:99 (初学一级) | 2015-06-25 10:05

@车宝大人: 对。自己写或使用 SDK。

Launcher | 园豆:45050 (高人七级) | 2015-06-25 10:10
其他回答(2)
0

楼主理解错公司的意思了。

编程语言内部没有编码一说,因为支持多语言的编程语言一般都在内部使用一种统一的编码,比如utf8, utf16, 因为内部是统一的,所以也没必要告诉程序员内部使用了什么编码,告诉了反而是坏事。

你公司说的转换成utf8b编码,是让你在输出文件流的时候要用utf8编码。

傲慢与偏剑 | 园豆:381 (菜鸟二级) | 2015-06-25 12:38

 

公司的要求是将那一段base64编码过的字符进行UrlEncode编码,然后作为参数传过去

这个参数在服务器那边是需要验证的

如果依Launcher所说,UrlEncode是一种编码方式,可能是基于utf8的二次加工

在iOS中的utf8编码主要是针对文字的编码,所以它会忽略等号这种不敏感字符?

 

 

 

 

 

支持(0) 反对(0) 电蚊拍 | 园豆:99 (初学一级) | 2015-06-25 13:44
0

 苹果的sdk基本都支持编解码的,看看这个例子:编解码例子 网上搜搜一大篇的

jprothwell | 园豆:214 (菜鸟二级) | 2016-11-07 17:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册