0

我从WebService保存数据,并且某些信息具有 ASCII 字符,例如‘or例如,那些 2 没有。#038;\u00f3

为什么是这样?我理解正确吗?

谢谢。

4

1 回答 1

3

替换 HTML 实体

由于您正在从 WebService 保存数据,因此您可以将这个NSString 类别用于 HTML,如本文所述:Objective-C:如何替换 HTML 实体?

(Html 实体类似于:‘- 更多关于wikipedia的内容)

该类别中可用的方法有:

- (NSString *)stringByConvertingHTMLToPlainText;
- (NSString *)stringByDecodingHTMLEntities;
- (NSString *)stringByEncodingHTMLEntities;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;



对评论的回应

[NSAttributedString initWithHTML: documentAttributes:]

从包含在给定数据对象中的 HTML 中初始化并返回一个新的 NSAttributedString 对象。

NSData* htmlData = [yourHTMLString dataUsingEncoding:NSUTF8StringEncoding]
NSAttributedString* theAttributedString = [[NSAttributedString alloc] initWithHTML:htmlData documentAttributes:NULL];

我一直在使用它,而且效果很好。我什至用它做了一个宏:

#define html2AttributedString(htmlString)                                                                   \
    [[[NSAttributedString alloc] initWithHTML:[(htmlString) dataUsingEncoding:NSUTF8StringEncoding]         \
    documentAttributes:NULL] autorelease]

用法:

NSAttributedString* attributedString = html2AttributedString(yourNSString);

然后,您可以为颜色、对齐方式、字体等制作宏…</p>

对于 iOS,您可以查看他们为您提供替代品的此页面

我们的 initWithHTML 方法旨在完美匹配 Mac 版本的输出。这对于角色来说是可以实现的,并且我已经进行了单元测试,以确保它保持完美。关于属性,有很多事情必须在 iOS 上稍有不同才能实现相同的外观。我不会用那里的细节来打扰你。

于 2013-03-25T21:54:54.610 回答