Ошибка в файле 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'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
.