的Objective-C的NSString编码变音

问题描述:

我有以下问题:的Objective-C的NSString编码变音

我在为UITextField中输入数据,然后我想将它发送到服务器。但是我输入的数据可能包含元音变音(ö,ä,ü,...)。然后,我将它传递给服务器时会得到错误的编码。但我用UTF8编码它。

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

我在做什么错?在第二行中,我看到一个非常好的“ö”,但在第三行中,我看到:√∂

Internet上有很多编码帖子,但没有真正解决问题。

+0

您的输出日志/终端/任何被正确声明/解释为UTF-8?使用UTF-8的 – Wevah

在与服务器通话时,您是否正确编码或解码事物?

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

stringByAddingPercentEscapesUsingEncoding:

stringByReplacingPercentEscapesUsingEncoding:

至于在第三的NSLog线路输出,在 “%S” 格式看到垃圾意味着NSLog期待C风格的字节集合,并且可能无法正确显示高级ASCII值。而NSLog中的“%@”格式意味着NSString对象和所有字符串编码应该正确地工作。

+0

%适用于我,只要我的终端设置正确。 – Wevah

+0

@ Wevah当然,%s也适用于我......但问题是它是否与变音符号或其他[diacritics](http://en.wikipedia.org/wiki/Diacritic)一起使用? –

+0

是的。 [更多字符] – Wevah

在处理UTF8和NSString时,您应该使用[@"ö" dataUsingEncoding:NSUTF8StringEncoding]来获取可以通过网络发送的NSData对象。这将始终正常工作。