欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS URL中文乱码问题解决方案

程序员文章站 2023-12-19 08:26:58
ios 解决url中文乱码问题解决 在做一个https连接时, 要客户端合成一段https地址 如果地址含中文的话程序会crash, 检查发现原来是中文没有转码的原因...

ios 解决url中文乱码问题解决

在做一个https连接时, 要客户端合成一段https地址

如果地址含中文的话程序会crash, 检查发现原来是中文没有转码的原因

在nsstring库里面找到了下面两个方法

- (nsstring *)stringbyaddingpercentescapesusingencoding:(nsstringencoding)encoding
- (nsstring *)stringbyreplacingpercentescapesusingencoding:(nsstringencoding)encoding

试了下, 有效

nsstring* string1 = @"https://www.cloudsafe.com/文件夹";

nsstring* string2 = [string1 stringbyaddingpercentescapesusingencoding:nsutf8stringencoding];
nsstring* string3 = [string2 stringbyaddingpercentescapesusingencoding:nsutf8stringencoding];

nsstring* string4 = [string2 stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];
nsstring* string5 = [string3 stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];

nsstring* string6 = [string4 stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];
nsstring* string7 = [string5 stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];

输出string1-7结果如下

string1:https://www.cloudsafe.com/文件夹

string2:https://www.cloudsafe.com/%e6%96%87%e4%bb%b6%e5%a4%b9
string3:https://www.cloudsafe.com/%25e6%2596%2587%25e4%25bb%25b6%25e5%25a4%25b9

string4:https://www.cloudsafe.com/文件夹
string5:https://www.cloudsafe.com/%e6%96%87%e4%bb%b6%e5%a4%b9

string6:https://www.cloudsafe.com/文件夹
string7:https://www.cloudsafe.com/文件夹

简单说下我是如何使用的:

在合成url后, 给整个string转码两次

nsmutablestring *address = [[nsmutablestring stringwithstring:setnichengstringwithoutusernameandnicheng] mutablecopy];
  address = [[address stringbyappendingstring:app.name] mutablecopy];
  address = [[address stringbyappendingstring:@"/"] mutablecopy];
  address = [[address stringbyappendingstring:_nametextfield.text] mutablecopy];
  address = [[address stringbyaddingpercentescapesusingencoding:nsutf8stringencoding] mutablecopy];
  address = [[address stringbyaddingpercentescapesusingencoding:nsutf8stringencoding] mutablecopy];

服务器端如何只是简单存储, 服务器接收数据后可以不用转码成中文

当客户端请求这部分数据时, 由客户端自己解码就好了

获取到字串后解码一次就可以正常显示为中文了:

 str = [str stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding]; 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: