iOS9.0之後NSStringencode方法替換
在iOS 9.0之後,以前常用的NSString
編碼的方法stringByAddingPercentEscapesUsingEncoding:
被棄用了,專案中可能會出現一堆如下️:
`stringByAddingPercentEscapesUsingEncoding:` is deprecated: first deprecated in iOS 9.0 – Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.
作為一個有強迫症的優秀程式猿,表示不能忍!
文件裡面是這麼說的:
- (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc
NS_DEPRECATED(10_0, 10_11, 2_0, 9_0, "Use -stringByAddingPercentEncodingWithAllowedCharacters: instead,
which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.");
很明白,用stringByAddingPercentEncodingWithAllowedCharacters:
方法替換之。
這個方法官方文件是這麼說的:
// Returns a new string made from the receiver by replacing all characters not in the allowedCharacters set with percent encoded characters. UTF-8 encoding is used to determine the correct percent encoded characters. Entire URL strings cannot be percent-encoded. This method is intended to percent-encode an URL component or subcomponent string, NOT the entire URL string. Any characters in allowedCharacters outside of the 7-bit ASCII range are ignored.
最後一句Any characters in allowedCharacters outside of the 7-bit ASCII range are ignored.
,意思就是說,任何非7-bit ASCII字元擱到allowedCharacters
裡面也將被忽略,也就是allowedCharacters
裡面的字元跟7-bit ASCII字元不會被編碼。
換句話說,上面方法在處理的時候會編碼url的中的非7-bit ASCII字元,如這些【`#%^{}”[]|<>】,如果需要忽略之,需要通過(NSCharacterSet *)allowedCharacters
這個引數指定。總結如下
[aString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//等價於
[aString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}"[]|\<> "]];
注意:
- 字符集最後是一個空格!
- 這裡字符集的意思就是,字串中含有字符集裡面的字元將不會被編碼。
另外,URL中常用的NSCharacterSet
型別定義在分類NSCharacterSet (NSURLUtilities)
中,包含字符集如下:
URLHostAllowedCharacterSet "#%/<>?@^`{|}
URLFragmentAllowedCharacterSet "#%<>[]^`{|}
URLPasswordAllowedCharacterSet "#%/:<>?@[]^`{|}
URLPathAllowedCharacterSet "#%;<>?[]^`{|}
URLQueryAllowedCharacterSet "#%<>[]^`{|}
URLUserAllowedCharacterSet "#%/:<>?@[]^`
以上,還在等什麼,全域性搜尋替換吧,消滅️!
喜歡我的可以關注收藏我的個人部落格:RobberJJ
相關文章
- stringByAddingPercentEscapesUsingEncoding方法被替換 iOS9.0EncodingiOS
- js replace替換字串,同時替換多個方法JS字串
- 破譯替換密碼的方法密碼
- js replace()方法進行字串替換JS字串
- 在sql語句中替換Not In 的方法SQL
- 網站圖修改後怎麼替換網站
- HTML 替換元素與非替換元素HTML
- 正規表示式的字串替換方法字串
- java字串%s格式化替換方法Java字串
- 使用正規表示式替換字串的方法(replace方法)字串
- 替換tabBartabBar
- 替換(substitution)
- SQL Server資料庫內容替換方法SQLServer資料庫
- Android開發之指令碼替換PackageNameAndroid指令碼Package
- Polardb 如何替換MYSQL 之 IMCI 列式攻略MySql
- xp系統輸入法刪除替換方法
- 如何為一個例項動態替換方法
- replace()方法替換字串內容程式碼例項字串
- 網頁設計師的字型替換方法指南網頁
- 批次word文件內容查詢替換的方法
- SQL Server 替換SQLServer
- 08:字元替換字元
- RACSubject替換代理
- sed 字串替換字串
- ACM 字串替換ACM字串
- asp字元替換字元
- vi替換命令
- 替換橫槓
- 設計原則之【裡式替換原則】
- 初探富文字之搜尋替換演算法演算法
- 替換空格 將一個字串中的空格替換成“ ”字串
- **PHP中替換換行符PHP
- WAS證書過期替換之獨立WAS Server之文字操作版Server
- 使用java8的方法引用替換硬編碼Java
- linux文字替換Linux
- perl替換特殊字元字元
- 里氏替換原則
- 前端公共模組替換前端