자바 스크립트의 모든 특수 문자 인코딩

Nov 10 2020

여기서받은 문자열을 인코딩하고 URL 매개 변수로 전달해야하므로 / 또는 paranthesis를 전달할 수 없다고 믿습니다 (따라서 다음 문자열이 있음을 고려하면

KEY WEST / Florida(FL)

나는 다음을 시도하고있다

encodeURIComponent("KEY WEST / Florida(FL)")
"KEY%20WEST%20%2F%20Florida(FL)"

escape("KEY WEST / Florida(FL)")
"KEY%20WEST%20/%20Florida%28FL%29"

첫 번째 코드는 ()를 유지하고 두 번째 코드는 /를 유지하므로 둘 다 나중에 코드에서 디코딩 할 수있는 문자열을 인코딩하지 않습니다.

한 번에이 작업을 수행하고 나중에 필요할 때 디코딩하는 방법은 무엇입니까?

또한 escape ()가 더 이상 사용되지 않는 것처럼 보이므로 인코딩을 수행하는 방법이 선호됩니까?

답변

1 FZs Nov 10 2020 at 22:23

URL 인코딩, encodeURI및 encodeURIComponent기능을 사용해야합니다.

encodeURI특수 문자 만 encodeURIComponent인코딩하고 URL에서 의미가있는 문자도 인코딩하므로 예를 들어 쿼리 문자열을 인코딩하는 데 사용됩니다.

괄호는 ( 여기에 설명 된대로 ) 인코딩하지 않고 URL의 모든 위치에서 허용 encodeURIComponent되므로 그대로 둡니다.

이 escape함수 는 deprecated 로 간주 될 수 있으며 공식적으로는 아니지만 피해야합니다.


그래서 인코딩을 수행하는 방법이 선호됩니까?

  • 전체 URL의 경우 encodeURI
  • URL 부분의 경우 (예 : 조각의 쿼리 문자열) encodeURIComponent

또한 언제 / 대신 이스케이프를 사용해야 합니까? 를 참조하십시오 .encodeURIencodeURIComponent