我的UTF-8 xml元素中有一个“title”属性,例如
<tag title="This is some test with special chars §£" />
因为我希望直接在HTML页面中打印此属性的内容,所以我想尝试输出:
<tag title="This is some test with special chars §£" />
我在那里添加属性的代码片段如下所示:
new XElement( "tag",
new XAttribute( "title" , title)
);
&amp;等人物和“逃脱,但§£不是 - 因为他们是有效的utf-8字符。 我应该改变什么?
答案 0 :(得分:2)
如果页面声明为UTF-8,则HTML支持UTF-8字符。
您应始终指定编码 用于HTML或XML页面。如果你 不要,你冒这个角色的风险 你的内容不正确 解释。这不仅仅是一个问题 人类可读性日益增加 机器需要了解您的数据 太。你也应该检查一下 没有指定不同的编码 在不同的地方。
如果页面的默认编码是范围较小的字符集,则它不会正确呈现所有UTF-8字符。但是,如果文档声明为UTF-8,它们应该显示正常。
而不是用实体引用替换字符you may need to explicitly declare the encoding of your page as UTF-8.
有多种方法可以做到这一点:
<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<?xml version="1.0" encoding="UTF-8"?>
答案 1 :(得分:0)
可能是您可以手动解码这些字符。我之前用过这个
Dictionary<string, char> HTMLSymbolMap = new Dictionary<string, char>()
{
{"–",'–'},
{"—",'—'},
{"‘",'‘'},
{"’",'’'},
{"‚",'‚'},
{"“",'“'},
{"”",'”'},
{"•",'•'},
{"·",'·'},
{"„",'„'},
{"£",'£'},
{"§",'§'},
};
public string CleanJunk(string docText)
{
foreach (var kv in HTMLSymbolMap)
{
docText = docText.Replace(kv.value.tostring(), kv.key);
}
return docText;
}
有关详细信息,请参阅此HTMLSymbol table