IOS URL中文乱码问题解决方案
程序员文章站
2023-12-20 22:30:28
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];
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!