Исключить несколько символов «%» в Android

В <string-array name = "versions"> У меня есть этот зверь записи (сведенный до разумного минимума, чтобы воспроизвести эффект):

<item>100% foo 40%bar</item> 

Который производит эти ошибки:

 Multiple annotations found at this line: - error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute? - error: Found tag </item> where </string-array> is expected 

Добавление formatted = "false" ничего не меняет.

 <item>100% foo 40%bar</item> 

Приводит к тем же сообщениям об ошибках. WTH?

 <item>100% foo 40bar</item> <item>100 foo 40%bar</item> <item>100% foo 40%</item> 

Все будет нормально работать. Экранирование его с помощью \% просто игнорируется, что приводит к той же ошибке. %% не приводит к ошибке, но я получаю %%.

Solutions Collecting From Web of "Исключить несколько символов «%» в Android"

Кодирование каждого в качестве символа Юникода в xml работает для меня:

 <string name="test">100\u0025 foo 40\u0025bar</string> 

% – зарезервированный символ в XML, например < , > и т. Д. Используйте %% для каждого % вы используете в строчном ресурсе.

Использование CDATA может работать.

 <item><![CDATA[100% foo 40%]]></item>