program tip

종결되지 않은 문자열 리터럴의 일반적인 소스

radiobox 2021. 1. 9. 09:41
반응형

종결되지 않은 문자열 리터럴의 일반적인 소스


이 질문에 이미 답변이 있습니다.

Firefox 확장에서 읽고 실행되는 JavaScript 스크립트를 디버깅하려고합니다. Firebug 콘솔을 통해서만 오류를 볼 수 있으며 (내 코드는 Firebug에 표시되지 않음) "종료되지 않은 문자열 리터럴"을보고합니다.

선과 그 주위의 선을 확인했고 모든 것이 미세한 괄호, 중괄호 및 따옴표가 균형을 이루는 것처럼 보입니다. 내가 찾아야하는 다른 가능한 원인은 무엇입니까?


대부분의 브라우저는 다음과 같은 코드에 문제가있는 것 같습니다.

var foo = "</script>";

Firefox, Opera 및 IE8에서는 종료되지 않은 문자열 리터럴 오류가 발생합니다. 스크립트를 포함하는 html 코드를 직렬화 할 때 매우 불쾌 할 수 있습니다.


줄 바꿈을 찾으십시오! 그것들이 종종 원인입니다.


"평판"이 있으면 잼 투데이의 답변에 투표하겠습니다

데이터가 PHP를 통해 들어오는 경우 도움이 될 수 있습니다.

$str = str_replace(array("\r", "\n"), '', $str);

난 그냥 그 발견 "<\/script>"작업에 나타납니다뿐만 아니라 "</scr"+"ipt>".


JSLint를 통해 스크립트 실행을 시도 할 수 있습니다 .


태그 클로저를 이스케이프하거나 ASCII 코드를 사용하십시오.

<\/script>

<&#47;script>

일부 서버 측 코드에 의해 삽입 될 수있는 이스케이프되지 않은 단일 큐트가 포함 된 문자열을 찾으십시오.


잘라 내기 / 붙여 넣기를 수행 한 경우 : 일부 온라인 구문 하이 라이터는 작은 따옴표와 큰 따옴표를 섞어서 형식이 지정된 따옴표 쌍 (일치하는 열기 및 닫기 쌍)으로 바꿉니다. (지금 당장은 예제를 찾을 수 없습니다) ... 따라서 Command- +를 몇 번 누르고 따옴표 문자를 응시해야합니다.

하는 재시도 다른 글꼴을? 또한 다른 편집기와 IDE는 다른 토크 나이저와 강조 규칙을 사용하며 JS는 구문 분석 할 더 동적 인 언어 중 하나이므로 emacs, vim, gedit (JS 플러그인 사용)에서 파일을 열어보십시오. 운이 좋으면 다음 중 하나를 사용하십시오. 파일 끝을 통과하는 긴 자주색 문자열이 표시됩니다.


슬래시 (/)를 이스케이프 했습니까? 나는 전에 그들과 문제가 있었다


과거에는 일반적으로 Word에서 복사하여 붙여 넣을 때 각진 따옴표 ( ')에 문제가있었습니다. 일반 작은 따옴표 ( ')로 바꾸면 트릭이됩니다.


또한 % 0A는 인코딩 된 줄 바꿈 문자 URL입니다. 문제가되는 코드에서 줄 바꿈이있는 위치를 찾는 데 시간이 걸렸습니다.


도움이되지 않으면 다음과 같은 유니 코드 문자를 찾으십시오.

\u2028

이로 인해 두 줄 이상의 문자열에서이 오류가 발생할 수 있습니다.


PHP 코드에 줄 바꿈이 있기 때문일 수 있습니다. 경고 창 메시지에 줄 바꿈이 필요한 경우 PHP 코드의 각 줄 끝에 이스케이프 구문으로 포함하십시오. 나는 일반적으로 다음과 같은 방법으로 수행합니다.

$message = 'line 1.\\n';
$message .= 'line 2.';

Chromebug 를 사용해 보셨습니까 ? 확장을위한 Firebug입니다.


"이진 검색"을 시도하십시오. 코드의 절반을 삭제하고 다시 시도하십시오. 오류가 여전히 존재하면 나머지 코드의 절반을 삭제하십시오. 오류가 없으면 삭제 한 내용을 다시 넣고 절반을 삭제합니다. 반복.

상당히 빠르게 몇 줄로 좁힐 수 있어야합니다. 내 경험에 따르면이 시점에서 어리석은 잘못된 문자열을 발견하게 될 것입니다.

오류가있는 서버 측 리소스를 잘 모르는 경우 브라우저에 저장된 HTML 출력 버전에서이 작업을 수행하는 것이 편리 할 수 ​​있습니다.


The web page developer guessed wrong about which encoding is used by the viewer's browser. This can usually be solved by specifying an encoding in the page's header.


Scan the code that comes before the line# mentioned by error message. Whatever is unterminated has resulted in something downstream, (the blamed line#), to be flagged.


Whitespace is another issue I find, causes this error. Using a function to trim the whitespace may help.


$str = str_replace(array("\r\n","\n\r","\r", "\n"), '
', stripslashes($str));

This should work.

ReferenceURL : https://stackoverflow.com/questions/227552/common-sources-of-unterminated-string-literal

반응형