在NSDictionary中保存特殊字符/瑞典语/德语字符

时间:2014-02-05 09:57:48

标签: ios iphone objective-c ios7

我想在NSDictionary中保存特殊字符/德语/瑞典语字符,并且必须将此数据发布到服务器,但保存在字典中的数据将转换为控制台输出中的其他格式。我试图将此字符串保存为不同的类型转换但未获得。

由于NSDictionary的数据类型是通用的,并且在发送到POST时它以修改后的格式发送,我希望将此数据保存在NSDictionary中,以便它可以以适当的格式发送到服务器并在服务器端可读

我的代码是

NSString *playerName = @"Lëÿlã Råd Sölvê";  // dummy player name
NSLog(@"playerName: %@",playerName);

NSDictionary *postParameters = @{@"playerName1": playerName,
                                 @"playerName2": [NSString stringWithString:playerName],
                                 @"playerName3": [NSString stringWithUTF8String:[playerName UTF8String]],
                                 @"playerName4": [NSString stringWithCString:[playerName UTF8String] encoding:NSASCIIStringEncoding],
                                 @"playerName5": [[NSString alloc] initWithString:playerName],
                                 @"playerName6": [NSString stringWithFormat:@"%@",playerName]};


NSLog(@"postParameters: %@",postParameters);

,输出

playerName: Lëÿlã Råd Sölvê
postParameters: {
    playerName1 = "L\U00eb\U00ffl\U00e3 R\U00e5d S\U00f6lv\U00ea";
    playerName2 = "L\U00eb\U00ffl\U00e3 R\U00e5d S\U00f6lv\U00ea";
    playerName3 = "L\U00eb\U00ffl\U00e3 R\U00e5d S\U00f6lv\U00ea";
    playerName4 = "L\U00c3\U00ab\U00c3\U00bfl\U00c3\U00a3 R\U00c3\U00a5d S\U00c3\U00b6lv\U00c3\U00aa";
    playerName5 = "L\U00eb\U00ffl\U00e3 R\U00e5d S\U00f6lv\U00ea";
    playerName6 = "L\U00eb\U00ffl\U00e3 R\U00e5d S\U00f6lv\U00ea";
}

我怎样才能实现这一目标......

1 个答案:

答案 0 :(得分:1)

您的代码没有任何问题。

您所看到的是NSLogdescription方法的人工制品 - 前者调用后者来获取输出对象的文本表示。对于NSString,使用Unicode显示字符串。但是对于NSDictionary,包含的字符串使用Objective-C Unicode字符转义序列显示,其形式为'\Uxxxx'

为了确保自己一切正常,你可以使用:

for (NSString *key in postParameters)
   NSLog(@"%@ -> %@", key, postParameters[key]);

并且一切都应该显示正常(除了playerName4,你自己搞乱了字符串。)