字符串本来已经经过了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中实现这种效果?
拜托大家帮帮忙!
你把 utf8 同 url encode 搞混淆了。
url encode也是一种编码方式吗?怎样才能在iOS中用url encode?
@车宝大人: 对。自己写或使用 SDK。
楼主理解错公司的意思了。
编程语言内部没有编码一说,因为支持多语言的编程语言一般都在内部使用一种统一的编码,比如utf8, utf16, 因为内部是统一的,所以也没必要告诉程序员内部使用了什么编码,告诉了反而是坏事。
你公司说的转换成utf8b编码,是让你在输出文件流的时候要用utf8编码。
公司的要求是将那一段base64编码过的字符进行UrlEncode编码,然后作为参数传过去
这个参数在服务器那边是需要验证的
如果依Launcher所说,UrlEncode是一种编码方式,可能是基于utf8的二次加工
在iOS中的utf8编码主要是针对文字的编码,所以它会忽略等号这种不敏感字符?