2012-08-02 94 views
9

我收到一個沒有正確編碼的nsstring,比如「mystring%201,其中必須是」mystring 1「。我怎樣才能替換所有可以解釋爲UTF8的字符?我讀了很多職位,但不是一個完整的解決方案請注意的NSString已被編碼錯了,我不是問如何編碼字符序列謝謝ios UTF8編碼從nsstring

+0

你在問URI編碼嗎? http://en.wikipedia.org/wiki/Percent-encoding – jcopenha 2012-08-02 21:31:02

+0

是的,URI編碼 – Jaume 2012-08-02 21:41:36

回答

33

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding是你想要什麼,基本上就這樣使用它:

newString = [myString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
2

檢查的Formatting String ObjectsStrings and Non-ASCII Characters部分:。

NSString *s = [NSString stringWithUTF8String:"Long \xe2\x80\x94 dash"]; 
1

你想要百分比編碼/解碼還是完整的URL編碼/解碼? - (NSString *)stringByReplacingPercentEscapesUsingEncoding:將工作,如果它只是百分比編碼,但如果有完整的URL編碼那麼(例如,一個空間可能是%20或+),那麼你就需要像url解碼three20圖書館(或在那裏搜索,有很多如何做的例子,如URL decoding/encoding NSString)。

6
[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 
2
lblDate.text=[NSString stringWithCString:[[arrTripDetail valueForKey:Param_vCurrencySymbol] UTF8String] encoding:NSUTF8StringEncoding]; 

U可以轉換&得到自定義的表情符號串

如:

輸入:\ U20b9

輸出:₹

+0

請不要發佈相同的答案多個問題。發佈一個很好的答案,然後投票/標記以重複關閉其他問題。如果問題不重複,*定製您的問題答案。* – durron597 2015-09-04 13:40:03