的Objective-C的NSString编码变音
问题描述:
我有以下问题:的Objective-C的NSString编码变音
我在为UITextField中输入数据,然后我想将它发送到服务器。但是我输入的数据可能包含元音变音(ö,ä,ü,...)。然后,我将它传递给服务器时会得到错误的编码。但我用UTF8编码它。
NSString *s = @"ö";
NSLog(@"%@", s);
NSLog(@"%s", s.UTF8String);
我在做什么错?在第二行中,我看到一个非常好的“ö”,但在第三行中,我看到:√∂
Internet上有很多编码帖子,但没有真正解决问题。
答
在与服务器通话时,您是否正确编码或解码事物?
记住的NSString有那些精彩的功能:
stringByAddingPercentEscapesUsingEncoding:
和
stringByReplacingPercentEscapesUsingEncoding:
至于在第三的NSLog线路输出,在 “%S” 格式看到垃圾意味着NSLog期待C风格的字节集合,并且可能无法正确显示高级ASCII值。而NSLog中的“%@”格式意味着NSString对象和所有字符串编码应该正确地工作。
答
在处理UTF8和NSString时,您应该使用[@"ö" dataUsingEncoding:NSUTF8StringEncoding]
来获取可以通过网络发送的NSData对象。这将始终正常工作。
您的输出日志/终端/任何被正确声明/解释为UTF-8?使用UTF-8的 – Wevah