Ошибка в файле strings.xml в Android

Я объявил длинную строку в string.xml приложения.

Объявлено как

<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY  BY ACCESSING THIS .................</string>

Но это дает следующую ошибку:

error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY

Ответ 1

разместите свою полную строку. Хотя, по моему мнению, в вашей строке есть символ апострофа ('). замените его на (\), и он исправит проблему. например,

//strings.xml
<string name="terms">
Hey Mr. Android, are you stuck?  Here, I\'ll clear a path for you.  
</string>

Ref:

http://www.mrexcel.com/forum/showthread.php?t=195353

https://code.google.com/archive/p/replicaisland/issues/48

Ответ 2

Решение

Апоптопы в strings.xml должны быть записаны как

\'



Пример

В моем случае у меня была ошибка с этой строкой в ​​моей strings.xml, и я ее исправил.

<item>Most arguments can be ended with three words, "I don\'t care".</item>

Здесь вы видите, что мое приложение правильно строит этот код.

enter image description here

Вот настоящая строка в моем приложении.

enter image description here

Ответ 3

Вы должны поставить перед апострофом. Как и этот \, также проверьте, что вы редактируете файл strings.xml, а не values.xml(в случае появления ошибки в этом файле вызывается файл android studio). Потому что, если вы отредактируете values.xml и попытаетесь скомпилировать его снова, ошибка не исчезнет. Это происходило со мной в последнее время.

Ответ 4

https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

Исключение апострофов и кавычек

Если у вас есть апостроф или цитата в вашей строке, вы должны либо сбежать от нее, либо заключить целую строку в другие типы заключенных кавычек. Например, вот некоторые жало, которые работают и не работают:

<string name="good_example">"This'll work"</string>
<string name="good_example_2">This\'ll also work</string>
<string name="bad_example">This doesn't work</string>
<string name="bad_example_2">XML encodings don&apos;t work</string>

Ответ 5

Я использую иврит (язык RTL) в файле strings.xml. Я вручную искал файл string.xml для этого char: ' чем я добавил escape char\infront этого (теперь он выглядит как) и по-прежнему получил ту же ошибку!

Я снова искал для char ', и я заменил char' на \'(eng writing), так как он показывает право налево, это выглядит так:\in the strings.xml!!

Проблема решена.

Ответ 6

Используйте это регулярное выражение (?<!\\)' для поиска неиспользованного апострофом. Он находит апостроф, которому не предшествует обратный слеш.

Ответ 7

Вы можете использовать эквивалент unicode как апострофа, так и другие символы, которые не поддерживаются в строке xml. Апопрофский эквивалент "\ u0027".

Ответ 8

1. для ошибки: неопознанный апостроф в строке

я обнаружил, что инструмент AAPT2 указывает на неправильную строку в xml, иногда. Поэтому вы должны исправить весь файл strings.xml

В Android Studio в файле проблем используйте:

Edit-> find-> заменить

Тогда напишите в первом поле\'(или\&,>,\<,\")
во втором put '(или &,>, <, ")
затем замените каждый, если необходимо. (или "reptlace all" в случае с ")
Затем в первом поле снова положим '(или &,>, <, ")
и во второй записи \
затем замените каждый, если необходимо. (или "заменить все" в случае с ")

2. для других проблемных символов
Я использую, чтобы прокомментировать каждую следующую часть +rebuild, пока я не найду неправильный знак.

Например, сбежавшее слово "\ update" неожиданно снижает такую ошибку :)

Ответ 9

Где ваш апостроф использовал строку? Я не могу этого найти. пожалуйста, опубликуйте его. Если вам нужно использовать апостроф в вашей строке, просто используйте escape-последовательность "\", как это.

did not \ didn\'t в XML, просто посмотрите strings.xml последний элемент.

enter image description here

Я думаю, что над изображением будут устранены ваши сомнения.

Ответ 10

Лучший ответ на простое экранирование ' с \' работает, но мне не нравится решение, потому что при использовании замены всех с ' на \', оно работает только один раз. Во второй раз вы останетесь с \\'.

Поэтому используйте: \u0027.