我正在尝试存储一个包含查询参数的完整URL:
www.miosito.net?prova®=bis
但这会引起问题,因为®
与®
实体很相似,而Android告诉我html实体未编写良好。
我需要这个,因为每个地区都使用完全不同的URL查询参数集。
我尝试使用[[CDATA[.. ]]
,但这种语法不受XML解析器喜欢。
&req
,而在于&
自身。对于XML/HTML,您需要使用实体&
(或&
)。但是对于URL,您应该将字符串进行URL编码(请参见文档),在这种情况下,所说的&
应该被替换为%26
。因此,您的最终字符串应如下所示:请注意,保留了原始HTML标签。www.miosito.net?prova%26reg=bis
请按照以下方式存储:
<string name="my_url">"www.miosito.net?prova&reg=bis"</string>
&
是 XML 中 & 符号的等价表示。
您可以将您的URL用双引号括起来,例如:
<string name="my_url">"www.miosito.net?prova®=bis"</string>
这是在Android中封装字符串资源的推荐方法。
更新1:请查看以下链接获取更多信息:
http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
更新2: @WebnetMobile.com:确实正确 :) '&'被xml视为特殊字符,用引号括起来不起作用。我试过了www.miosito.net?prova%26reg=bis
但它也没有起作用。我甚至试图用引号括起来,但仍然没有起作用。我错过了什么吗?
同时,以下内容有效:
<string name="my_url">www.miosito.net%1$sprova%2$sreg=bis</string>
然后在代码中:
Resources resources=getResources();
String url=String.format(resources.getString(R.string.my_url),"?","&") ;
'%1$s'和'%2$s'是格式说明符,类似于C语言中printf所使用的。'%1$s'用于字符串,'%2$d'用于十进制数等。