在HTML属性中编码URL时,我遇到了一个奇怪的问题。
我有以下HTML:
<a href=" https://www.google.co.in/#q=Pune&tbm=nws"></a>
到目前为止一切正常。
但是,此HTML是使用XmlTextWriter
动态生成的。
因此代码生成以下XML
<a href=" https://www.google.co.in/#q=Pune&tbm=nws"></a>
注意&
之后的Pune
单击此链接时,浏览器无法解码tbm=nws
参数。
我阅读了几篇文章,似乎表明上面的第二个HTML完全有效。
你能指导我哪里出错吗?
编辑:添加C#代码
XmlTextWriter writer = new XmlTextWriter (Console.Out);
writer.Formatting = Formatting.Indented;
// Write the root element.
writer.WriteStartElement("Items");
// Write a string using WriteRaw. Note that the special
// characters are not escaped.
writer.WriteStartElement("Item");
writer.WriteAttributeString("href","https://www.google.co.in/#q=Pune&tbm=nws");
writer.WriteString("Write unescaped text: ");
writer.WriteRaw("this & that");
writer.WriteEndElement();
// Write the same string using WriteString. Note that the
// special characters are escaped.
writer.WriteStartElement("Item");
writer.WriteString("Write the same string using WriteString: ");
writer.WriteString("this & that");
writer.WriteEndElement();
// Write the close tag for the root element.
writer.WriteEndElement();
// Write the XML to file and close the writer.
writer.Close();
答案 0 :(得分:1)
我认为你在这里正在攻击错误的问题。 &符号可以(并且应该)在HREF标记中转义。有关详细信息,请参阅此问题:Do I encode ampersands in <a href...>?
查询字符串的前缀应该是?。使用#的客户端框架时,这可能不明确,但规则仍然适用。
尝试按照以下格式设置锚点:
<a href="https://www.google.co.in/#/?q=Pune&tbm=nws"></a>