首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用以下字符的XML无效£`-

使用以下字符的XML无效£`-
EN

Stack Overflow用户
提问于 2013-01-22 18:38:47
回答 3查看 116关注 0票数 2

我正在尝试创建一个RSS feed,它将使用W3C验证器进行验证。我一直从以下包含字符£`-的URLS中遇到问题

以下是URL:

代码语言:javascript
复制
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

我已经尝试用转义字符替换符号,但这不起作用。以下是我一直在使用的转义字符:

代码语言:javascript
复制
 Text = Text.Replace("-", "&#45");
            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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-22 18:46:37

在将URL发布到RSS之前,您需要对它们执行URL encode操作:

代码语言:javascript
复制
var encoded = HttpUtility.UrlEncode(aUrl);

请注意,URL将不能直接使用,因为:/等也将被编码。

如果希望这些值是有效的XML,请改用SecurityElement.Escape

代码语言:javascript
复制
var escaped = SecurityElement.Escape(aUrl);
票数 3
EN

Stack Overflow用户

发布于 2013-01-22 18:43:03

我正在为我的系统构建一个API,并且我一直在使用一些东西来规范化字段。尝试使用PHP过滤:

代码语言:javascript
复制
$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);
票数 0
EN

Stack Overflow用户

发布于 2013-01-22 18:54:45

答案是要么使用UTF-8编码,要么将非ascii字符转换为XML实体。

  • UTF-8编码:确保文档以UTF-8格式输出,并包含相关的编码头。

另请参阅UTF-8 encoding xml in PHP

XML编码:将所有非字符转换为

  • 实体。

XML实体看起来像这样:£ (那个实体用于£符号)。大多数编程语言都会在您生成XML文档时自动执行此操作,或者提供执行此操作的标准函数。您没有指定正在使用的语言,但上面的说明应该可以帮助您找到合适的应用编程接口函数。

您不应该做的一件事是手动生成XML数据(例如,将标签和属性输出为字符串),或者手动替换实体。您应该为它使用适当的API。手动生成XML (或任何其他标准数据格式)总是会出现这样的问题,如果工具就在您面前,那么以一种困难的方式来完成它是不是有点疯狂。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14456606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档