2014-11-09 1 views
1

나누기 I 데이터베이스에서 일부 텍스트를 얻을 ELtld 파일을 사용하는 자바 스크립트가 있습니다문자열은 자바 스크립트

var deText = unescape("${smfn:getText('HelpTextDe')}"); 

이 문제는 다음과 코드 관련 라인

독일어 + 텍스트 %의 0D %의 0AGerman + 다음 + 라인

: 데이터베이스의 텍스트는이 같은 새로운 라인 이스케이프 문자를 포함 할 수 있음

자연스럽게 자바 스크립트 기능이 중단되었습니다. 다음 이미지는 내가 콘솔에서 얻을 오류 보여줍니다 : 나는 또한 unescape 방법없이 시도

enter image description here

(사실, 즉 나의 첫 번째 버전을했다, 내가 나중에 내 문제를 해결할 것으로 기대 unescape 추가) , 그러나 그것은 같았다.

데이터베이스에 대한 이러한 항목을 막지 않고이를 해결할 수있는 방법이 있습니까?

참고 : 답변 할 때 자바에 대한 지식은 매우 제한되어 있다는 점에 유의하십시오.

도움을 주시면 감사하겠습니다. 미리 감사드립니다!

답변

0

정확히 어떤 서버 소프트웨어가 변환을하는지 모르겠으므로 코드 만 제공 할 수는 없으며 전략 만 제공 할 수 있습니다.

JavaScript는 알아낼 수있는 것처럼 문자열 리터럴에 개행을 허용하지 않습니다. 이 문제를 해결하려면 전에을 클라이언트에 보내려면 줄 바꿈 문자를 \n 이스케이프 코드로 바꿔야합니다.

unescape()도 필요하지 않습니다.

내가 말했듯이, 나는 이것을 실제로 구현하기 위해 여러분에게 맡깁니다.

0

데이터베이스가 % 0D 및 % 0A 문자를 실제로 이스케이프 처리 한 경우이 작업은 정상적으로 작동합니다. Try running this code:document.write('<pre>' + unescape('a%0Db%0Ac') + '</pre>');

작동합니다. (<pre> 태그가 없으면 브라우저에서 렌더링 할 때 줄 바꿈 문자가 공백으로 표시됩니다. Firebug/Chrome에서 Inspect 요소를 보면, 줄 바꿈 문자가 올바르게 표시됩니다.)

문제는 데이터베이스에 UNESCAPED 개행 문자가 있고 Javascript는 문자열이 줄의 끝에서 종료되고 있다고 생각합니다. % 0D % 0A 문자를 실제로 포함하도록 데이터베이스를 변경하면 정상적으로 작동합니다.

또한 데이터베이스에서 렌더링하는 텍스트가 사용자가 입력하지 않았 으면 좋겠습니다. 그것은 당신이 그것을 닦지 않는 한 거대한 안보 문제입니다.