2011-11-29 51 views
2

我有以下問題:的Objective-C的NSString編碼變音

我在爲UITextField中輸入數據,然後我想將它發送到服務器。但是我輸入的數據可能包含元音變音(ö,ä,ü,...)。然後,我將它傳遞給服務器時會得到錯誤的編碼。但我用UTF8編碼它。

NSString *s = @"ö"; 
NSLog(@"%@", s); 
NSLog(@"%s", s.UTF8String); 

我在做什麼錯?在第二行中,我看到一個非常好的「ö」,但在第三行中,我看到:√∂

Internet上有很多編碼帖子,但沒有真正解決問題。

+0

您的輸出日誌/終端/任何被正確聲明/解釋爲UTF-8?使用UTF-8的 – Wevah

回答

1

在與服務器通話時,您是否正確編碼或解碼事物?

記住的NSString有那些精彩的功能:

stringByAddingPercentEscapesUsingEncoding:

stringByReplacingPercentEscapesUsingEncoding:

至於在第三的NSLog線路輸出,在 「%S」 格式看到垃圾意味着NSLog期待C風格的字節集合,並且可能無法正確顯示高級ASCII值。而NSLog中的「%@」格式意味着NSString對象和所有字符串編碼應該正確地工作。

+0

%適用於我,只要我的終端設置正確。 – Wevah

+0

@ Wevah當然,%s也適用於我......但問題是它是否與變音符號或其他[diacritics](http://en.wikipedia.org/wiki/Diacritic)一起使用? –

+0

是的。 [更多字符] – Wevah

1

在處理UTF8和NSString時,您應該使用[@"ö" dataUsingEncoding:NSUTF8StringEncoding]來獲取可以通過網絡發送的NSData對象。這將始終正常工作。