2011-01-13 204 views
3

我正在尋找一個示例,演示如何使用UTF-8編碼並解碼相同的字符串。編碼然後解碼意味着我想在兩個方面實現方法,一個可以編碼,另一個可以解碼。在iPhone中使用UTF-8編碼和解碼

我所見過的API,但我並沒有得到很大的成功:

  • stringWithCString:encoding:
  • stringWithUTF8String:
  • stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;

EDITED
我有串øæ-test-2.txt這我編碼如下:

char *s = "øæ-test-2.txt"; 
NSString *enc = [NSString stringWithCString:s encoding:NSASCIIStringEncoding]; 

但我得到øæ-test-2.txt作爲輸出。 現在我想回到原來的字符串後面即øæ-test-2.txt


EDITED
我正在從服務器øæ-test-2.txt和我通過解碼它需要øæ-test-2.txt。我能夠從鏈接中獲得輸出:http://www.cafewebmaster.com/online_tools/utf_decode

請嘗試使用該鏈接,您將瞭解我的關注。

如果任何人都可以提供一些提示,教程或指向正確的方向,我將非常感激。

問候

回答

7

要打開一個NSString對象成UTF8 C-字符串,可使用UTF8String

char *utf8string = [@"A string with ümläuts" UTF8String]; 

要打開一個UTF8 C-字符串轉換成NSString對象,使用stringWithUTF8String:initWithUTF8String:

NSString *string = [NSString stringWithUTF8String:utf8string]; 

請注意NSString對象實現爲UTF-16,所以你可以沒有真正的「UTF-8 NSString」(編碼應該被視爲實現細節,無論如何)。

+0

感謝您的緊急回覆。請看我編輯的問題。 – Ekra 2011-01-13 15:07:32

2

而不是

char *utf8string = [@"A string with ümläuts" UTF8String]; 

這應該是

const char *utf8string = [@"A string with ümläuts" UTF8String]; 

否則,你有不兼容的類型問題。