这篇文章上次修改于 2446 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

黄色波浪线

以前用 Eclipse 开发 Android 时在 strings.xml 中定义字符串,如果有标点符号,比如

<string name="loading">加载中…</string>

就会有黄色波浪线划出符号位置,这种警告其实对于开发来说,没有什么影响。如果需要消除警告,或者说如何专(zhuang) 业(bi)的在 strings.xml 文件中表达标点符号呢,也就是这篇文章的主题。

Unicode字符集

对于 strings.xml 中定义的标点或特殊字符可以用Unicode字符编号做替换,及可解决黄色波浪线的问题。其实呢,Unicode字符集是个庞大的集合,应该说囊括了电脑上能显示的所有字符,包括英文字母,包括汉字等,那我就想不通了,为什么只有标点和特殊字符会有黄色波浪线呢,而汉字没有报警告呢[手动滑稽]。

之前看到网上有人说支持的是 Latin-1 字符集,在当我知道 Latin-1 字符集的大小只有255之前,我是一直相信这个说法的。就以“…”标点来说,他的字符编码是&#8230;,很显然超过了255。其实这个说法也不能算是错,Unicode 的255以内的字符与 Latin-1 的字符集是一致的,只是strings.xml 支持的字符编码不只255这个范围。

正确的使用姿势

<string name="loading">加载中&#8230;</string>

对于“…”可以看成是一个标点,也可以看成是三个标点,显示效果是一样的,所以也可以这样写

<string name="loading">加载中&#46;&#46;&#46;</string>

为什么是8230,为什么是46,这些都是Unicode字符表定义的,可以使用字符查询工具查询。

这里还要说一点,在使用工具查询“…”标点时,不要手动输入三个点“.”,那样只会查出三个.,“…”标点是个整体,是一个符号,需要通过输入法的标点符号或者特殊符号键入。

不建议的使用姿势[滑稽]

<string name="loading">&#21152;&#36733;&#20013;&#8230;</string>

最后

在 AS 中不会出现文章开头提到的黄色波浪线,想必基本上都使用 AS 开发 Android 了吧,再想想这篇文章,似乎说了半天废话~


2017/12/27.

Dean.King

Beijing