1. 程式人生 > >iOS 處理中文網址路徑轉換

iOS 處理中文網址路徑轉換

今天處理圖片載入和檔案下載的時候發現一個問題,服務端返回的url裡面含有中文,使用[NSURLURLWithString:urlString]生成URL物件時,iOS客戶端不能正確進行網路請求,網上找到的URLEncode方法又不能完全解決問題.

   方法1:

NSString* encodedString = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

   方法2:

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);

   這兩種方法當urlString裡含有中文時URL編碼是正確的,但是如果其中含有已轉義的%等符號時,又會再次轉義而導致錯誤.

   檢視方法2引數說明:

CFStringRefCFURLCreateStringByAddingPercentEscapes(CFAllocatorRefallocator, CFStringRef originalString, CFStringRefcharactersToLeaveUnescaped, CFStringReflegalURLCharactersToBeEscaped, CFStringEncoding encoding);

因此做出修改,寫出方法:

    NSString *encodedString = (NSString *)

    CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,

                                            (CFStringRef)urlString,

                                            (CFStringRef)@"!$&'()*+,-./:;[email protected]_~%#[]",

                                            NULL,

                                            kCFStringEncodingUTF8);

如果在所有的類裡都要用到這個方法,可以寫成category,然後在標頭檔案import "NSString+URL.h" 即可呼叫.

NSString+URL.h  檔案

  1. @interface NSString (URL)  
  2. - (NSString *)URLEncodedString;  
  3. @end  
NSString+URL.m  檔案
  1. #import "NSString+URL.h"
  2. @implementation NSString (URL)  
  3. - (NSString *)URLEncodedString  
  4. {  
  5.     NSString *encodedString = (NSString *)  
  6.     CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  
  7.                                             (CFStringRef)self,  
  8.                                             (CFStringRef)@"!$&'()*+,-./:;[email protected]_~%#[]",  
  9.                                             NULL,  
  10.                                             kCFStringEncodingUTF8);  
  11.     return encodedString;  
  12. }  
  13. @end  

呼叫方法:

    NSString *encodedString = [urlString URLEncodedString];

相關推薦

iOS 處理中文網址路徑轉換

今天處理圖片載入和檔案下載的時候發現一個問題,服務端返回的url裡面含有中文,使用[NSURLURLWithString:urlString]生成URL物件時,iOS客戶端不能正確進行網路請求,網上找

node基礎學習——path的處理路徑轉換

app nbsp fan 所有 nod 文件名 系統 保留 bsp p.p1 { margin: 0.0px 0.0px 10.0px 0.0px; text-align: center; line-height: 11.0px; font: 14.0px "PingFan

SnowNLP:?中文分詞?詞性標準?提取文本摘要,?提取文本關鍵詞,?轉換成拼音?繁體轉簡體的 處理中文文本的Python3 類庫

sum 文本分類 idf 區別 xtran 轉換成 好的 一個 osi SnowNLP是一個python寫的類庫,可以方便的處理中文文本內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和

中文網址中文路徑的支援

一直說可以用中文網址了,於是我申請了一個 技術支援.線上 繫結到一個ip上,為了防止這個ip被攻擊,就不寫出了,下面用A.B.C.D表示,然後我在centos上curl一下 [~]$ curl 雲端計算。技術支援。線上/金山 -v * Input domain encoded as

asp對中文編碼及解碼,Decode和Encode中文網址處理

<%'-------------------------------------------------------------------------- '=======================================================

Python2.7處理中文路徑時解決問題

解決 pan 遇到 tdi string key nbsp class -s Python2.7處理中文路徑時遇到了些問題 解決方法如下 import os path=‘./測試‘ upath=unicode(path,‘utf-8‘)

python 處理中文路徑終極解決辦法

1 據說python3就沒有這個問題了 2 u’字串’ 代表是unicode格式的資料,路徑最好寫成這個格式,別直接跟字串’字串’這類資料相加,相加之後type就是str,這樣就會存在解碼失誤的問題。 別直接跟字串’字串’這類資料相加 別直接跟

透過現象看webpack處理css檔案中圖片路徑轉換的具體過程

webpack是目前使用比較流行的一個前端模組打包器,前端的任何資源都被當成一個模組來處理,如圖片、css檔案等等。在基於webpack構建的前端專案中,一般都會配置有關css檔案處理的規則,這其中也包括css檔案中圖片資源的處理,那麼webpack到底是怎麼處理它的呢?筆者之前也遇到過類似圖片路勁的問題,為

perl 處理文件路徑的一些模塊

都是 cti 默認 模塊 入參 func lis 合並 rds perl有句格言:There is more than one way to do it。意思就是任何問題用perl都有好幾種解決方法。以前處理文件路徑的時候都是自己寫正則表達式,而用perl的模塊來解決則更加

Servlet----------在使用doGet()和doPost()是如何處理中文亂碼

tps .com 添加 java img print imp 跳轉 中文亂碼 如果在登錄界面跳轉到時servlet中使用doGet()方法顯示中文出現亂碼時,可以添加這兩行代碼來解決,但這不是唯一的方法 request.setCharacterEncoding("GBK"

解決 ElementTree 無法處理中文

pytho ascii absolut tle leave odin erro con mar 解決 ElementTree 無法處理中文,UnicodeEncodeError: ‘ascii’ codec can’t encode characters in positi

使用Filter處理中文亂碼re

filter處理中文亂碼 在web中當頁面的編碼格式和服務器的編碼格式不一樣時,向服務器傳遞中文就會出現亂碼,那麽如何解決呢?這裏要分get請求和post請求,對於這兩種不同的請求有不同的處理處理方式,處理方式如下:1.post請求 post請求處理中文亂碼相對簡單,只需要在doPost()方法中設置

PHP的json_encode處理中文

pan eat 轉碼 nic create odin 使用 再次 reac 調用封裝的接口,需要轉為 json格式,使用json_encode(),但是傳遞的中文被編碼了, 這是因為用PHP的json_encode來處理中文的時候, 中文會被編碼, 變成不可讀的, 類似

IOS 時間字符串轉換時間戳失敗問題

情況下 開發 jquery png 刪除 substr 程序 第三方 三方 鏈接:https://pan.baidu.com/s/1nw6VWoD 密碼:1peh   有時候獲取到的時間帶有毫秒數或者是(2018-2-6 11:11:11)格式的(別說你沒遇到過,也別什麽都

如何使用過濾器處理中文亂碼

圖片 context port over insert except 技術 DDU 入參 如果瀏覽器提交數據給Servlet的時候含中文參數,那麽在Servlet中就要處理中文亂碼。如果有多個Servlet都要同時接收中文參數,那麽在Servlet中處理中文亂碼就比較麻煩。

自然語言處理相關網址收錄

google tac 中國 ngui main -s als 相關 nth 中國中文信息學會 http://www.cipsc.org.cn/ 中國計算機學會 http://www.ccf.org.cn/ IEEE https://www.ieee.org/ ACL Wik

java 中文繁簡體轉換工具 opencc4j

就是 str 一個 tps github oid pid art maven 創作緣由 對於中文的繁簡體轉換是一種很常見的需求。 但是很多工具類都是簡單的做個映射。(使用map,集合,properties)等。 存在一個嚴重的問題:特殊詞組 的轉換可能存在問題。 OpenC

概率軟邏輯(PSL,Probabilistic soft logic)通用(可處理中文)版本

cti etc gic 打印 pan 全部 ood out external 一、簡介 概率軟邏輯(PSL,Probabilistic soft logic)是用於開發概率模型的機器學習框架,由加州大學聖克魯茲分校和馬裏蘭大學聯合開發。目前其復雜的環境構建方式和Groovy

[qt]qstring和string中文支持轉換問題

style class from 問題 () cdata bsp .data bytearray QString str2qstr(const string str) { return QString::fromLocal8Bit(str.data()); }

Python編碼處理和文件路徑處理

https win get pre encode com html .cn color #變量編碼格式化 a=‘我是中文‘ print(u‘%s‘%a)------------------ 結果:我是中文 引用網址 #變量編碼格式化 a=‘我是中文‘ print(a.