将Unicode文本转换为ASCII会增加额外的字符

问题描述 投票:-1回答:1

我有这个原始字符串101\U2013113 W 4th St

哪个应该读101-113 W 4th St

这个字符串来自CLPlacemark

placemark.addressDictionary[@"Street"]

但是,当我解码时:

NSData *decode = [placemark.addressDictionary[@"Street"] dataUsingEncoding:NSUnicodeStringEncoding allowLossyConversion:YES];
NSString * address =  [[NSString alloc] initWithData:decode encoding:NSASCIIStringEncoding];

它在字符串的开头输出一些我无法粘贴的额外字符,但NSLog显示"\U00ff\U00fe101\^S 113 W 4th St Chattanooga TN 37402";

如果我NSLog的地标,它读取它应该101-113 W 4th St

我究竟做错了什么?

ios objective-c nsdata clplacemark
1个回答
2
投票

我究竟做错了什么?

一切。 addressDictionary已被弃用,在任何情况下都无需解码任何数据;地址信息已作为字符串发送给您。 (目前还不清楚应该是什么“原始”字符串;字符串是字符串。)您不能将字符串转换为ASCII,因为它可能(此处)包含nonASCII字符。只需使用你给的字符串。

CLPlacemark具有subthoroughfare(门牌号)和thoroughfare(街道名称)等属性,或者如果您想要整个地址,请使用CNPostalAddressFormatter获取其postalAddress和格式(您需要导入Contacts框架)。

© www.soinside.com 2019 - 2024. All rights reserved.