我想在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";
}
我怎样才能实现这一目标......
答案 0 :(得分:1)
您的代码没有任何问题。
您所看到的是NSLog
和description
方法的人工制品 - 前者调用后者来获取输出对象的文本表示。对于NSString
,使用Unicode显示字符串。但是对于NSDictionary
,包含的字符串使用Objective-C Unicode字符转义序列显示,其形式为'\Uxxxx'
。
为了确保自己一切正常,你可以使用:
for (NSString *key in postParameters)
NSLog(@"%@ -> %@", key, postParameters[key]);
并且一切都应该显示正常(除了playerName4
,你自己搞乱了字符串。)