UTF-8编码URL

| 信息: 我有一个程序可以为Google网站站长工具生成XML站点地图(以及其他功能)。 GWT给某些站点地图带来了错误,因为URL包含诸如¾,ã,ã€等字符序列。** GWT说:   我们要求您的Sitemaps文件采用UTF-8编码(通常可以在保存文件时执行此操作)。与所有XML文件一样,任何数据值(包括URL)都必须对字符使用实体转义码:&,\',\“,<,>。 特殊字符在XML文件(带有HTML实体)中进行了概括。 XML文件片段:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">
    <url>
        <loc>http://domain/folder/listing-&#227;&#129;.shtml</loc>
        ...
我的网址是UTF-8编码的吗? 如果没有,如何用Java做到这一点? 以下是我程序中将URL添加到站点地图中的行:
    siteMap.addUrl(StringEscapeUtils.escapeXml(countryName+\"/\"+twoCharFile.getRelativeFileName().toLowerCase()));
** =我不确定是哪个导致错误,可能是前两个示例。 对于所有编辑,我深表歉意。     
已邀请:
尝试使用
URLEncoder.encode(stringToBeEncoded, \"UTF-8\")
编码网址。     
URL必须按照URI规范进行百分比编码。 例如,代码点U + 00e3(ã)将成为编码序列
%C3%A3
。 在XML文档中发出URI时,它必须符合XML的标记要求。 例如,URI“ 4”变为“ 5”。 “&”号是XML中的转义字符。 您可以在此处找到有关URI编码的详细讨论。     
不要将URL中非ASCII字符的百分比编码与URL中字符的XML实体转义混淆。创建XML网站地图时,您需要同时执行这两项操作。 老实说,从阅读您的原始帖子来看,似乎有些时髦,因为您提到的字符使我想起了一次不成功的转换:) 您确定使用UTF-8时这些字符确实是URL的一部分吗?     
URL中的所有非ASCII字符都必须经过\'x-url-encoding \'编码。 这是解释它的Wiki链接:http://en.wikipedia.org/wiki/Percent-encoding。 另外,所有XML特殊符号(
&, >, <, etc.
)也必须转义。 Jai的答案显示了对任意字符串进行x-url-encode的正确方法。但是请注意,它不会进行XML转义。     

要回复问题请先登录注册