iOS中 HTML中字符实体转化为可直接显示字符

2019-07-09  本文已影响0人  Sh1mmer

由于项目是web端和移动端通用的数据,有的时候有些字符web端显示正常.但到了移动端就会直接显示字符的实体名称.


屏幕快照 2019-07-09 上午10.46.59.png

挨个替换会麻烦
在这我们可以使用下面的方法来同意替换为显示结果

-(NSString*)attributedStringWithHTMLString:(NSString*)htmlString{
    NSDictionary *options = @{ NSDocumentTypeDocumentAttribute :NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute :@(NSUTF8StringEncoding) };
    NSData *data = [htmlString dataUsingEncoding:NSUTF8StringEncoding];
    NSAttributedString *string = [[NSAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];
    return string.string;
}

网络请求下来的数据一般都是字典格式,我们可以在数据请求下来的时候直接将里面的数据全部转换下

//字典转字符串
-(NSString*)dictionaryToJson:(NSDictionary *)dic {
    NSError *parseError = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
    
    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
//字符串转字典
-(NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString{
    if (jsonString == nil) {
        return nil;
    }
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError *err;
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
    if(err) {
        NSLog(@"json解析失败:%@",err);
        return nil;
    }
    return dic;
}

直接将json传进来就可以了

[self dictionaryWithJsonString:[self attributedStringWithHTMLString:[self dictionaryToJson:jsonDic]]];
上一篇 下一篇

猜你喜欢

热点阅读