대부분의 HTML 문자 엔터티가 만들어진 이유를 이해하지만 앰퍼샌드 HTML 엔터티의 목적을 이해하지 못합니다. &에는 & 기호보다 더 많은 비트가 포함되어 있으며 내부에 이미 &도 있습니다.

앰퍼샌드가 기호를 사용하는 대신 더 많은 데이터가 필요한 형식으로 인코딩되어야하는 이유는 무엇입니까?

댓글

  • 이것은 다른 인용문 안에 인용문을 포함시키는 방법과 같습니다. 컴퓨터는 오랫동안 이러한 문제 를 가지고있었습니다. 코드는 다른 상황의 데이터 일 수 있고 데이터는 코드 일 수 있습니다. 즉, 컴퓨터가 일반 기계와 다른 점, 인간의 언어가 동물이내는 소음과 다른 점. 이제 가서 자기 참조!

답변

모호함을 피하기 위해 다음과 같은 웹 사이트를 작성한다고 가정 해 보겠습니다. HTML. “문자 그대로 <를 작성하려면 & lt;를 작성해야합니다.”라는 줄을 작성합니다. 이제 HTML로 적 으려면 :

<p>To write a literal &lt; you have to write &lt;. 

… 죄송합니다. 제대로 작동하려면 & 문자를 &로 시작하는 HTML 구문과 구별 할 수있는 방법이 있어야합니다. 따라서 다음과 같이 작성해야합니다.

<p>To write a literal &lt; you have to write &amp;lt;. 

… 올바르게 렌더링됩니다.

댓글

  • 모호성을 허용 하는 것입니다. 한 컨텍스트에 두 가지 수준의 해석을 포함 할 수 있습니다.
  • @ user251748 그 '는 모호성을 허용하지 않으며 '이를 명확히합니다.

답변

이것은 1968 년에 발명 된 SCRIPT로 거슬러 올라간 것 같습니다.

대략적으로 SCRIPT는 SCRIPT / VS가되었고 GML이되었습니다. HTML이 된 SGMLguid

다음은 SCRIPT를 소개하는 원본 문서입니다.

http://web.mit.edu/smadnick/www/papers/J002.pdf

&를 선택하는 이유는 무엇입니까? 터미널 창에 있다고 상상해보십시오. 마우스가 없습니다. 커서 키를 사용하여 명령 줄에서만 입력 할 수 있습니다. 줄을 삭제하려면 , 문자를 삭제하려면 @를 입력합니다.

끝쪽으로 볼 수 있습니다. ¢는 이스케이프 문자를 나타내는 데 사용됩니다. cent는 키보드 (shift 6)에 있었지만 삭제되었습니다. (ascii와 관련이있는) 대부분의 키보드는 ^로 대체되었지만 일부는 ¬로 대체되었습니다.

그래서 갑자기 SCRIPT에서 프로그램을 작성하면 새 컴퓨터에서 이스케이프 문자를 입력하는 데 매우 어려워집니다. 대체 문자를 선택해야합니다. 같은 키에있는 기호 중 하나를 사용하면 키보드 제조업체가 여전히 논쟁 중이기 때문에 일부 사람들이 입력 할 수 없습니다.

선택해야합니다. 키 6에 있던 대체 이스케이프 문자입니다. 무엇을 선택합니까?

이미지 설명 입력 여기

댓글

  • 당신의 답을 생각하지 않습니다 ' 질문에 대한 답이 정말 마음에 듭니다.
  • @ChrisG 질문에 대한 유일한 답입니다. 왜 &가 이스케이프 문자입니까? 하지만 이스케이프 문자가 무엇인지 설명하는 대답이 있기 때문에 질문이 제대로 표현되지 않은 것 같습니다.
  • @DavidArno하지만 질문은 다음과 같습니다. ' t &가 이스케이프 문자 인 이유는 &가 이스케이프되어야하는 이유입니다. f.
  • 좀 더 깊은 수준에서 질문을 해석해야했던 것은 사실입니다. 하지만 답을 조사하는 것은 흥미로 웠습니다.
  • @SebastianRedl, 네, 지금 알았습니다. 그러나 질문이 표현되는 방식은 iv id = “일 때 " 이스케이프 문자로 &가 사용되는 이유로 읽었습니다. “507985f1c9″>

자체를 이스케이프해야합니까? " 운 좋게도 여러분 중 일부는 나보다 문장이 잘못된 질문을 더 잘 읽는 것이므로 OP가 무엇을 알고 싶었는지 🙂

Answer

모든 데이터 형식에서 이스케이프 메커니즘 자체를 이스케이프해야합니다. 이스케이프 문자는 특수 문자입니다.

예를 들어 다음 텍스트를 표시하고 싶습니다.

앰퍼샌드는 &amp;

이 HTML을 다음과 같이 작성하면

<p>Ampersands are escaped like <code>&amp;</code> 

표시됩니다. as :

앰퍼샌드는 &

그래서 실제로 다음과 같이 작성해야합니다.

<p>Ampersands are escaped like <code>&amp;amp;</code> 

다음과 같이 올바르게 표시됩니다.

앰퍼샌드는 &amp;

와 같이 이스케이프됩니다.

많은 언어에서 백 슬래시는 이스케이프입니다. 캐릭터. 그런 다음 리터럴 문자열 C:\projectsC:\\projects로 이스케이프해야합니다.

데이터 형식이 임의의 데이터를 나타낼 수 있어야하며 알려진 길이 또는 구분 기호가 필요합니다. 사람이 편집 할 수있는 형식에서는 알려진 길이를 처리하기가 어렵습니다. 그러나 구분자가 있으면 이스케이프 가능해야합니다. 그래서 우리는 탈출 메커니즘이 필요하고 탈출 메커니즘은 스스로 탈출해야합니다. 최소한의 해결책은 분리 문자를 이스케이프 문자로 사용하는 것입니다. 예 : 구분 기호 "의 경우 문자열 don"t do that"don""t do that"로 인코딩 될 수 있습니다.

주석

  • ASCII 이스케이프 문자는 원래이 정확한 목적을 위해 설계되었습니다. 전체 이름은 Data Link Escape 입니다. 이전에 모뎀 / Mux 상황에서 사용했습니다.

답변

“&”는 엔티티를 시작하므로 그 자체로 사용하는 것은 “유효한 HTML이 아닙니다 (일부 브라우저에서는 허용 할 수 있지만 보장되지는 않음).”

댓글

  • 독립적 인 앰퍼샌드는 모호한 앰퍼샌드 , 즉 ' HTML 표준에 정의되지 않았습니다. 그렇지 않으면 앰퍼샌드가 잘 정의되어 있습니다.
  • @amon-물론입니다.하지만 ' 언제의 정의에 주목할 가치가 있습니다. ' re allowed는 서로 다른 HTML 버전에 따라 다릅니다 (예 : HTML2, 세미콜론 뒤에 있는지 여부에 관계없이 ' t 뒤에 영숫자가있는 경우에만 허용됨). , 그리고 가장 엄격한 정의에도 불구하고 일부 상황에서 이들을 피할 수 있어야합니다. 또한 HTML에서는이를 허용하지만 SGML이나 XML은 허용하지 않으므로 HTML DTD가있는 SGML 파서는 실패하고 XHTML 파서는 '도 허용하지 않습니다. 따라서 ' 실제로이 기능을 사용하지 않는 것이 좋습니다.
  • 먼저 HTML이있었습니다. 그런 다음 모든 브라우저 공급 업체가 원하는대로했기 때문에 혼란이있었습니다. Serious Engineers ™는 그 혼란에 지쳐 XHTML을 만들었습니다. 그러나 손으로 XML을 작성하는 것은 좋지 않아 혼란이 계속되었습니다. 마지막으로 혼돈은 코드화되어 HTML5라고 불 렸습니다. 혼돈을 잘 분석하지만 잘 정의 된 방식으로 분석합니다. HTML5를 SGML 방언으로 해석하는 것은 더 이상 유용하지 않습니다. 그리고 XHTML을 제외하고 HTML은 결코 XML이 아니 었습니다. 그러나 모든 원격 최신 브라우저 또는 HTML 파서는 최소한 구문 수준에서는 HTML5를 잘 처리합니다.
  • @amon : 오류 복구에 대한 HTML5 사양을 읽는 것이 아니라면 HTML을 직접 작성하는 것은 짜증납니다. , ' 파서가 HTML 텍스트가 DOM이되는 방식을 해석하는 방법을 알려주지 않습니다. ' 너무 많은 기이 한 레거시가 있기 때문입니다. 코너 케이스와 같은 것을 쓰는 다른 방법. 어쨌든 HTML을 XHTML 호환 하위 집합으로 제한하지 않는 한, 실제 XHTML을 작성하지 마십시오.

Answer

모든 프로그래밍 언어 또는 스크립팅 언어에는 고유 한 식별자가 있거나 코드에서 개발자가 사용할 수없는 예약 된 키워드를 말할 수 있습니다. 일부 문자는 HTML에서도 예약되어 있습니다. 앰퍼샌드 (&)는 HTML에서 예약 된 문자를 표시하는 엔티티로 사용됩니다. 몇 가지 예는 다음과 같습니다.

&nbsp; &lt; &gt; 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다