programing

디코딩의 차이점은 무엇입니까?URIC 구성 요소와 decodeURI?

shortcode 2023. 1. 19. 07:13
반응형

디코딩의 차이점은 무엇입니까?URIC 구성 요소와 decodeURI?

JavaScript 함수의 차이점은 무엇입니까?decodeURIComponent그리고.decodeURI?

이 둘의 차이점을 설명하기 위해, 이 둘의 차이점을 설명하겠습니다.encodeURI그리고.encodeURIComponent.

주요 차이점은 다음과 같습니다.

  • encodeURI함수는 완전한 URI에서 사용하기 위한 것입니다.
  • encodeURIComponent함수는 ...에 사용되도록 의도되어 있다.구분자( / ? : @ & = + $ , # ) 사이에 있는 임의의 부품인 URI 컴포넌트.

그래서...encodeURIComponent이러한 구분자는 특수문자가 아닌 텍스트로 간주되기 때문에 부호화됩니다.

디코드 함수의 차이로 돌아가 각 함수는 특수 문자의 의미와 그 처리를 고려하여 대응하는 인코딩에 의해 생성된 문자열을 디코딩합니다.

encodeURIC 컴포넌트/디코딩URIComponent()는 거의 항상 URI 부분의 텍스트 문자열을 연결하고 분할하기 위해 사용하는 쌍입니다.

encodeURI는 그다지 흔하지 않고 이름이 잘못되어 있습니다.fixBrokenURI라고 불립니다.URI에 가깝지만 공백과 같은 비활성 문자를 사용하여 실제 URI로 변환합니다.이 명령어는 사용자 입력에서 비활성 URI를 수정하는데 유효하며, IRI(URI, Unicode 문자가 없는 URI)를 플레인 URI(%-escape UTF-8을 사용하여 비 ASCII를 인코딩)로 변환하기 위해서도 사용할 수 있습니다.

부호화 장소URI에는 fixBrokenURI()라는 이름이 붙어야 합니다.decodeURI()는 마찬가지로 potentialBreakMyPrevious라고 불릴 수 있습니다.현용 URI()어디에도 유효한 용도가 생각나지 않는다. 피하라.

js> s = "http://www.example.com/string with + and ? and & and spaces";
http://www.example.com/string with + and ? and & and spaces
js> encodeURI(s)
http://www.example.com/string%20with%20+%20and%20?%20and%20&%20and%20spaces
js> encodeURIComponent(s)
http%3A%2F%2Fwww.example.com%2Fstring%20with%20%2B%20and%20%3F%20and%20%26%20and%20spaces

공백 및 기타(인쇄 불가능 등) 문자를 인코딩하여 "안전한" URI를 생성하는 반면 콜론, 슬래시 및 플러스 문자를 추가로 인코딩하여 쿼리 문자열에서 사용하도록 의도되어 있습니다.여기서 +와 ?와 &의 부호화는 쿼리 문자열의 특수 문자이기 때문에 특히 중요합니다.

같은 질문을 했는데 답을 찾지 못했기 때문에 실제로 어떤 차이가 있는지 알아보기 위해 몇 가지 테스트를 해봤습니다.URL/URI와 관계없는 인코딩이 필요하기 때문에 이렇게 했습니다.

  • encodeURIComponent("A")"하지만 "를 "%로 인코딩하지 ."A" "A" "%41" "A" "A"
  • decodeURIComponent("%41")A ★★★★★★★★★★★★★★★★★★★★.
  • encodeURI("A")"하지만 "를 "%로 인코딩하지 ."A" "A" "%41" "A" "A"
  • decodeURI("%41")A ★★★★★★★★★★★★★★★★★★★★.

즉, 양쪽 모두 영숫자를 부호화하지 않아도 디코딩할 수 있습니다.하지만...

  • encodeURIComponent("&")%26을(를)
  • decodeURIComponent("%26")을 한다.&"어울리다"
  • encodeURI("&")을 한다.&"어울리다"
  • decodeURI("%26")%26을(를)

인코딩을 해도URIC 구성 요소가 모든 문자를 인코딩하지 않음, 디코딩URIC 구성 요소는 %00에서 %7F 사이의 값을 디코딩할 수 있습니다.

참고: 유니코드 값이 아닌 경우 %7F 이상의 값을 디코딩하려고 하면 스크립트가 실패하고 "URI 오류"가 발생합니다.

encodeURIComponent()

입력을 URL 인코딩 문자열로 변환합니다.

encodeURI()

URL - 입력을 인코딩하지만 전체 URL이 제공된다고 가정하므로 프로토콜(예: http://)과 호스트 이름(예: www.stackoverflow.com)을 인코딩하지 않음으로써 유효한 URL을 반환합니다.

decodeURIComponent() ★★★★★★★★★★★★★★★★★」decodeURI()

decodeURIComponent는 &, ?, #, decode 등의 URI 특수 마커를 디코딩합니다.URI는 하지 않습니다.

encodeURIC 구성 요소가 이스케이프되지 않음:

A-Z a-z 0-9 - _ . ! ~ * ' ( )

encodeURI() 이스케이프되지 않음:

A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

encodeURI() 함수는 URI에 특별한 의미(예약 문자)를 가진 문자를 인코딩하지 않습니다.

언급URL : https://stackoverflow.com/questions/747641/what-is-the-difference-between-decodeuricomponent-and-decodeuri

반응형