一、AAPT: error: unescaped apostrophe in string
报错原因分析
做国际化多语言功能时,我在arrays.xml文件中定义了一些字符串如下
<item>My name's Lisa</item>
报错翻译过来是字符串未替换的撇号
于是我思考可能是'
导致的报错,于是我把上述代码替换为下面的代码报错就解决了。
<item>My name"s Lisa</item>
报错解决
撇号'
可用";
替换,如:<item>My name"s Lisa</item>
- 可使用双引号将字符串资源括起来,如:
<item>"My name's Lisa"</item>
- 可使用转义字符在
撇号'
前,如:<item>My name\'s Lisa</item>
二、Multiple substitutions specified in non-positional format报错
报错原因分析
首先我在string.xml文件中定义了一些字符串
<string name = "upgrade_time"> 驱动板:%s\t\t信号版:%s</string>
报错翻译过来就是以非位置格式指定的多个替换,报错提示中有提到设置formatted="false"
,于是我把上述的代码改成了下面的就不会运行报错了。
<string name = "upgrade_time" formatted="false"> 驱动板:%s\t\t信号版:%s</string>
报错解决方式
查看了一些博文,且亲试了一下,有这些方式可以解决上述报错:
- 字符串中添加
formatted="false"
属性 - 用
%%
表示一个%
三、一些常用HTML特殊字符编码
在Android的xml文件中,涉及到一些特殊字符的显示可能会报错的,需要用HTML特殊字符去转换。(单引号可采用\'
来表示)
特殊符号 | HTML编码 |
---|---|
& | & |
> | > |
< | < |
> | > |
" | " |
> | > |
半个空白位 | ensp; |
一个空白位 |   |
> | > |