gpt4 book ai didi

objective-c - NSString 特殊字符编码

转载 作者:行者123 更新时间:2023-12-03 17:42:43 27 4
gpt4 key购买 nike

我正在尝试转换一些特殊字符,例如 ä , ö , ü , α , μ , α , ο , ι ,以及网页上的其他内容。当我使用 ASIHTTPRequest 下载页面时,我得到一些代码而不是字符本身。示例:
ä = \u00E4
μ = \u03BC
α = \u03B1

如果我使用 [NSString stringWithContentsOfURL:aNSURL encoding:NSASCIIStringEncoding error:nil]; 也会发生这种情况我尝试了不同的可用编码,但它们都不适用于上面的示例。例如:使用 NSUnicodeStringEncoding我得到一些奇怪的像“中文”字符和 NSASCIIStringEncoding我得到这些数字和字母。

奇怪的是,如果我在像 safari 这样的网络浏览器中查看网页的源代码,一切都很好,正常的 HTML 字符实体如:ä = ä

有什么办法可以将这些编码字母转换回来吗?


谢谢

编辑
抱歉,我忘了提到上面浏览器的源代码。

我刚刚注意到这个网站:link十六进制 HTML 实体与我使用此代码得到的非常相似。示例:
ä = ä
μ = μ
α = α

正如您所看到的,它们非常相似。只是小写和 0被替换为 x ,并在开头添加 &# ,到最后; 。我只需要编写一些小代码来将数字和字母转换为十六进制实体,这不会是一个大问题。然后只需使用 HTML 实体转换器即可完成。

无论如何,非常感谢您再次帮助我

肖恩

最佳答案

您可以使用在此处找到的link 。它使用 CFXML 解析器的内置方法。它描述了下面的代码

@interface MREntitiesConverter : NSObject {
NSMutableString* resultString;
}
@property (nonatomic, retain) NSMutableString* resultString;
- (NSString)convertEntiesInString:(NSString)s;
@end

@implementation MREntitiesConverter
@synthesize resultString;
- (id)init
{
if([super init]) {
resultString = [[NSMutableString alloc] init];
}
return self;
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)s {
[self.resultString appendString:s];
}
- (NSString)convertEntiesInString:(NSString)s {
if(s == nil) {
NSLog(@"ERROR : Parameter string is nil");
}
NSString* xmlStr = [NSString stringWithFormat:@"<d>%@</d>", s];
NSData *data = [xmlStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSXMLParser* xmlParse = [[NSXMLParser alloc] initWithData:data];
[xmlParse setDelegate:self];
[xmlParse parse];
NSString* returnStr = [[NSString alloc] initWithFormat:@"%@",resultString];
return returnStr;
}
- (void)dealloc {
[resultString release];
[super dealloc];
}
@end

或者,您可以使用 NSString* sI = (NSString*)CFXMLCreateStringByUnescapingEntities(NULL, (CFStringRef)s, NULL);,该方法的可用性取决于您要构建的操作系统。

关于objective-c - NSString 特殊字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8114162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com