将字符实体转换为其Unicode等价物像"和—之类的实体。不幸的是,我们需要将此数据提供给基于flash的rss阅读器,而flash不会读取这些实体,但它们会读取unicode等效项(例如")。使用.Net4.0,是否有任何实用方法可以将html编码的字符串转换为使用unicode编码的字符实体?这是我需要的更好的例子。数据库具有如下html字符串:John&Sarah去看了$ldquo;Scream4$rdquo;。约翰和莎拉去看了$ldquo;Scream4$rdquo;。我需要在rss/xml文档中输出标签:
John&Sarahgottosee“Scream4”.
John&Sarahgottosee“Scream4”.
我是使用XmlTextWriter从数据库记录创建xml文档,类似于此示例代码http://www.dotnettutorials.com/tutorials/advanced/rss-feed-asp-net-csharp.aspx所以我需要替换html中的所有字符实体数据库中的字符串及其unicode等价物,因为基于Flash的rss阅读器无法识别最常见之外的任何实体,例如&。我的第一个想法是,您的RSS阅读器可以接受实际字符吗?如果是这样,您可以使用HtmlDecode并直接键入。如果您确实需要将其转换为数字表示形式,您可以解析每个实体,对其进行HtmlDecode,然后将其转换为int以获得以10为底的unicode值。然后将其重新插入字符串中。编辑:这里有一些代码可以证明我的意思(未经测试,但可以理解):stringinput="Somethingwith—orothercharacterentities.";StringBuilderoutput=newStringBuilder(input.Length);for(inti=0;i我可能在那里的某个地方有一个一个的错误,但它应该接近。HttpUtility.HtmlDecode对你有用吗?我意识到它不会转换为unicode等价物,而是将它转换为unicode.是否有特定原因需要unicode等效项?更新编辑字符串测试="John&Sarah去看了《惊声尖叫4》。";字符串解码=HttpUtility.HtmlDecode(测试);字符串编码=HttpUtility.HtmlEncode(解码);StringBuilderbuilder=newStringBuilder();foreach(charcinencode){if((int)c>127){builder.Append("");builder.Append((int)c);builder.Append(";");}else{builder.Append(c);}}stringresult=builder.ToString();您可以从W3C下载相应HTML和/或XHTMLDTD的本地副本。然后设置一个XmlResolver并使用它来扩展在文档中找到的任何实体。您可以使用正则表达式来查找/扩展实体,但它对上下文一无所知(例如,不应扩展CDATA部分中的任何内容)。Itmighthelpyoutoputtheinputpathinthetextbox上面是C#LearningTutorial:ConvertingCharacterEntitiestotheirunicodeequivalents分享的所有内容,如果对大家有用需要进一步了解C#LearningTutorial,希望大家多加注意---试试{FileInfon=newFileInfo(textBox1.Text);stringinitContent=File.ReadAllText(textBox1.Text);intcontentLength=initContent.Length;匹配米;while((m=Regex.Match(initContent,"[^a-zA-Z0-9/\s(\d+;)-]")).Value!=String.Empty)initContent=initContent.Remove(m.Index,1).Insert(m.Index,string.Format("{0};",(int)m.Value[0]));File.WriteAllText("输出路径",initContent);}catch(System.Exceptionexcept){MessageBox.Show(excep.Message);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: