Android의 strings.xml 파일 오류


114

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
오류는 문자열에 너무 많은 점이 있기 때문입니다. `오류 :`가 앞에 붙지 않은 아포스트로피는 더미 메시지이며 문제는 점입니다. 내가 기억하는 것처럼 세 개 이상의 점이 있으면 오류가 발생할 수 있습니다.
Dudeist 2014

답변:


293

전체 문자열을 게시하십시오. 하지만 내 생각에는 문자열에 아포스트로피 ( ') 문자가 있습니다. (\ ')로 바꾸면 문제가 해결됩니다. 예를 들면

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

참고 :

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

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


30
문자열 데이터의 모든 아포스트로피를 이스케이프해야한다는 바보 같은 요구 사항에 대해 아무도 이야기하지 않는 이유는 무엇입니까? CDATA 섹션 내에서도!
Phil Kulak 2012 년

2
@PhilKulak heh, 예를 들어 프랑스어로 꽤 미쳤습니다. ftw를 검색하고 바꿉니다.
Warpzit 2014 년

4
@PhilKulak Android strings.xml에서 <string name="good_example">"This'll work"</string> 참조 : developer.android.com/guide/topics/resources/…
situee

문자열이 많고 모두 바꾸기를 사용하면 문제가 발생할 수 있습니다. 내 대답을 참조하십시오.
Dan Bray

26

해결책

strings.xml의 아포스트로피는 다음 과 같이 작성해야합니다.

\'


제 경우에는 strings.xml 에서이 문자열에 오류가 발생하여 수정했습니다.

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

여기에서 내 앱이 해당 코드로 제대로 빌드되는 것을 볼 수 있습니다.

여기에 이미지 설명 입력

다음은 내 앱의 실제 문자열입니다.

여기에 이미지 설명 입력


1
제가 XML을 사용하고 있었기 때문에 & apos;를 사용하고 있었는데 그것도 오류입니다.
Chris Westin

12

아포스트로피 앞에 \를 넣어야합니다. 이 \ '와 같이 values.xml이 아닌 strings.xml을 편집하고 있는지 확인하십시오 (오류가 표시되면 android studio 에서이 파일로 안내합니다). values.xml을 편집하고 다시 컴파일을 시도하면 오류가 지속되기 때문입니다. 최근에 이런 일이 일어났습니다.


1
ㅋ! 나에게도 그런 일이 일어났습니다. 아포스트로피는 정확히 그 이유 때문에 계속해서 튀어 나왔습니다. 날 미치게 만들었 어.
DrMcCleod

10

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>

6

(?<!\\)'이스케이프 처리되지 않은 아포스트로피를 검색 하려면이 정규식 을 사용하십시오 . 백 슬래시가 앞에 나오지 않는 아포스트로피를 찾습니다.


4

strings.xml에서 히브리어 (RTL 언어)를 사용합니다. 나는이 문자에 대한 string.xml을 수동으로 검색했습니다. '앞에 이스케이프 문자 \를 추가 한 것보다 (이제 \'처럼 보입니다) 여전히 같은 오류가 발생합니다!

나는 char '를 다시 검색하고 char'를 \ '(eng writing)로 바꿨습니다.

문제 해결됨.


@akauppi,이 설명은 RTL 언어 개발자를위한 것입니다. 화면에 문자를 잘못된 순서로 표시하여 RTL을 잘 처리 할 수없는 편집기를 만나기 때문입니다. xml에 긴 히브리어 감각을 입력하는 것은 지저분
해질

아, 오른쪽에서 왼쪽으로. 이제 모든 것이 의미가 있습니다. 감사.
akauppi

3
우리는 양쪽에서 이스케이프하여 히브리어 아포스트로피를 해결했습니다. \ '\
radley

2

아포스트로피 및 xml 문자열에서 지원되지 않는 기타 문자에 해당하는 유니 코드를 사용할 수 있습니다. 아포스트로피에 해당하는 것은 "\ u0027"입니다.


1

1. 오류 : 문자열에서 이스케이프 처리되지 않은 아포스트로피

내가 찾은 것은 AAPT2 도구가 때때로 xml의 잘못된 행을 가리킨다는 것입니다. 따라서 전체 strings.xml 파일을 수정해야합니다.

Android Studio에서 문제 파일 사용 :

편집-> 찾기-> 바꾸기

그런 다음 첫 번째 필드 \ '(또는 \ &,>, \ <, \ ")
를 두 번째 입력'(또는 &,>, <,")에
쓴 다음 필요한 경우 각각을 바꿉니다. )
그런 다음 첫 번째 필드에 다시 '(또는 &,>, <, ")를 입력
하고 두 번째에 \'
를 쓴 다음 필요한 경우 각각을 바꿉니다 (또는 '모두 바꾸기"의 경우').

2. 다른 문제가있는 기호의
경우 잘못된 기호를 찾을 수 없을 때까지 각 다음 절반 부분에 주석을 달기 위해 사용합니다.

예를 들어 이스케이프 된 단어 "\ update"는 예기치 않게 이러한 오류를 삭제합니다. :)


1

단순히 'with \'작업을 이스케이프하는 가장 좋은 대답은 모두를 사용하여 'to to를 \'사용할 때 한 번만 작동 하기 때문에 해결책이 마음에 들지 않습니다 . 두 번째로 \\'.

따라서 사용 : \u0027.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.