19

我正在尝试存储一个完全限定的 url,还有查询参数:

www.miosito.net?prova&reg=bis

但它导致了一个问题,因为&reg它类似于®实体,android 告诉我,html 实体写得不好。

我需要这个,因为每个语言环境都使用一组完全不同的 url 查询参数。

我尝试过,[[CDATA[.. ]]但 xml 解析器不喜欢这种语法。

4

4 回答 4

17

问题不在于问题,而在于问题&req本身&。对于 XML/HTML,您必须使用&实体(或&),但对于 URL,您应该使用 URL 编码(请参阅 docs)字符串,在这种情况下,&应该用%26. 所以你的最终字符串应该如下所示:

www.miosito.net?prova%26reg=bis

于 2012-09-02T16:12:20.683 回答
6

像这样存储它:

<string name="my_url">"www.miosito.net?prova&amp;reg=bis"</string>

& 符号&amp;的 XML 等效项在哪里。 &

于 2012-09-02T18:42:52.107 回答
1

百分比编码可以解决问题:http ://en.wikipedia.org/wiki/Percent-encoding 你基本上会有这样的东西:www.miosito.net?prova%26reg=bis

于 2012-09-02T16:08:04.620 回答
1

您可以用双引号将您的网址括起来,例如:

<string name="my_url">"www.miosito.net?prova&reg=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' 用于十进制数,所以上。

于 2012-09-02T16:21:55.020 回答