将属性文本转换为 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 请检查更新的问题 我想可能是因为>
字符正好在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 字符串?的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 字符串 UTF8 转换为 NSDictionary Swift