将属性文本转换为 UTF8 字符串?

Posted

技术标签:

【中文标题】将属性文本转换为 UTF8 字符串?【英文标题】:convert attributetext to UTF8 string? 【发布时间】:2018-03-30 12:13:01 【问题描述】:

我正在从服务器获取\Ud835\Udc13\Ud835\Udc1e\Ud835\Udc2c\Ud835\Udc2d 字符串。

当我使用 NSMutableAttributedString 进行转换时

 NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithData:[self.message dataUsingEncoding:NSUTF8StringEncoding] options:@NSDocumentTypeDocumentAttribute: NShtmlTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding] documentAttributes:nil error:nil];

它在标签上显示完美的测试作为属性字符串。

我想使用 UIExView 将 Test 发送到服务器。

我正在使用以下代码

NSDictionary *documentAttributes = @NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding];
    NSData *htmlData = [txtView.internalTextView.attributedText dataFromRange:NSMakeRange(0, txtView.internalTextView.attributedText.length) documentAttributes:documentAttributes error:NULL];
    NSString *htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];

它打印 HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<style type="text/css">
p.p1 margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px '.SF UI Text'
span.s1 font-family: '.SFUIText'; font-weight: normal; font-style: normal; font-size: 16.00pt
</style>
</head>
<body>
<p class="p1"><span class="s1">Test</span></p>
</body>
</html>

哪个是错误的,它应该只显示 Test。我怎样才能做到这一点

【问题讨论】:

引用中的不是 HTML,而是 CSS。 CSS 用于格式化 HTML,但它不是 HTML。 @D.Pardal 请检查更新的问题 我想可能是因为&gt;字符正好在HTML代码的开头。 不,不是问题 输出在 Chrome 中工作。您使用的是什么浏览器/程序? 【参考方案1】:
-(NSMutableAttributedString*)getHtmlColorStringForCustomStyle:(NSString*)customString withBold:(NSString*)boldString italic:(NSString*)italicString andUnderLine:(NSString*)underlineString withColor:(NSString*)color

NSMutableAttributedString *attStringforCustomStyle = [[NSMutableAttributedString alloc] initWithData: [customString dataUsingEncoding:NSUTF8StringEncoding] 选项:@ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType

documentAttributes: nil error:nil];

[attStringforCustomStyle beginEditing];

[attStringforCustomStyle addAttribute:NSForegroundColorAttributeName value:[UIColor colorwithHexString:color alpha:1.0] range:NSMakeRange(0,customString.length)];

if ([boldString isEqualToString:@"yes"])

    [attStringforCustomStyle addAttribute:NSFontAttributeName
                                    value:[UIFont boldSystemFontOfSize:12]
                                    range:NSMakeRange(0, attStringforCustomStyle.length)];


if ([italicString isEqualToString:@"yes"]) //Put in else if because it does not apply both in single string


    [attStringforCustomStyle addAttribute:NSFontAttributeName
                                    value:[UIFont italicSystemFontOfSize:12]
                                    range:NSMakeRange(0, attStringforCustomStyle.length)];


if ([underlineString isEqualToString:@"yes"])


    [attStringforCustomStyle addAttribute:NSUnderlineStyleAttributeName
                                    value:@(NSUnderlineStyleSingle)
                                    range:NSMakeRange(0, attStringforCustomStyle.length)];



[attStringforCustomStyle endEditing];

return attStringforCustomStyle;

【讨论】:

以上是关于将属性文本转换为 UTF8 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 utf8 字符串转换为 utf8 字节数组?

将 JSON 字符串 UTF8 转换为 NSDictionary Swift

如何将 UTF8 组合字符转换为 ruby​​ 中的单个 UTF8 字符?

将数据字符串转换为 UTF8 的问题

如何将 UTF8 字符串转换为字节数组?

智能引号未正确转换为 UTF8