我正在尝试创建一个RSS feed,它将使用W3C验证器进行验证。我一直从以下包含字符£、`或-的URLS中遇到问题
以下是URL:
http://www.example.co.uk/news/2012/april/stamp-rationing-–-why-the-royal-mail-are-ripping-you-off下面是错误:
此提要未验证。第14行,第119列:链接必须是完整且有效的URL:帮助... --为什么皇家邮件-are-ripping- http://www.example.co.uk/news/2012/april/stamp-rationing-–-why-the-royal-mail-are-ripping-you-off -off
我已经尝试用转义字符替换符号,但这不起作用。以下是我一直在使用的转义字符:
Text = Text.Replace("-", "-");
Text = Text.Replace("£", "%C2%A");
Text = Text.Replace("`", "%60");
Text = Text.Replace("’", "%60"); 有谁知道如何解决这个问题吗?下面是更多给我带来问题的链接:
http://www.example.co.uk/news/2012/march/for-sale-3-bed-detached-london-home-£15,000
错误:
此提要未验证。第14行,第106列:链接必须是完整且有效的URL:http://www.example.co.uk/news/2012/march/for-sale-3-bed-detached-london-home-14 15,000 help ... -sale-3-bed-detached- line home-14 15,000
发布于 2013-01-22 18:46:37
在将URL发布到RSS之前,您需要对它们执行URL encode操作:
var encoded = HttpUtility.UrlEncode(aUrl);请注意,URL将不能直接使用,因为:、/等也将被编码。
如果希望这些值是有效的XML,请改用SecurityElement.Escape。
var escaped = SecurityElement.Escape(aUrl);发布于 2013-01-22 18:43:03
我正在为我的系统构建一个API,并且我一直在使用一些东西来规范化字段。尝试使用PHP过滤:
$value = preg_replace('/[^a-z]/i', '', $value);
$value = preg_replace('/[^\x09\x0A\x0D\x20-\x7F]/e', '"&#".ord($0).";"', $value);
$value = htmlentities($value, ENT_NOQUOTES, 'UTF-8', false);发布于 2013-01-22 18:54:45
答案是要么使用UTF-8编码,要么将非ascii字符转换为XML实体。
XML编码:将所有非字符转换为
XML实体看起来像这样:£ (那个实体用于£符号)。大多数编程语言都会在您生成XML文档时自动执行此操作,或者提供执行此操作的标准函数。您没有指定正在使用的语言,但上面的说明应该可以帮助您找到合适的应用编程接口函数。
您不应该做的一件事是手动生成XML数据(例如,将标签和属性输出为字符串),或者手动替换实体。您应该为它使用适当的API。手动生成XML (或任何其他标准数据格式)总是会出现这样的问题,如果工具就在您面前,那么以一种困难的方式来完成它是不是有点疯狂。
https://stackoverflow.com/questions/14456606
复制相似问题