본문 바로가기
Today I Learned

[ TIL ] query parameter 로 특수문자 보낼때 encodeURIComponent 사용하기 (퍼센트 인코딩)

by 질서정연_ 2023. 4. 19.

 

get 요청을 할 때 파일 이름을 파라미터로 보내서 엑셀 파일을 받아오는 기능이 있다. 

파일 이름에 특수문자가 포함되어있을 때 파일 이름을 제대로 보내지 못해 엑셀 파일을 못 받아오고 있었다. 

 

encodeURIComponent("test?");

 

퍼센트 인코딩은 그냥 인코딩 하고싶은 문자열을 표준내장 객체인 encodeURIComponent 을 사용해주면된다.

 

encodeURIComponent 도 있고 encodeURI 도 있는데 

둘의 차이는  encodeURIComponent 가 좀 더 많은 종류의 특수문자를 퍼센트 인코딩 한다는 것이다. 

 

encodeURIComponent 는 

Not Escaped:

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

이걸 제외하고 인코딩 한다고 하고 

 

encodeURI 는

이스케이프 하지 않는 문자:

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

이걸 제외하고 인코딩한다고 한다. 

 

쿼리스트링 혹은 쿼리파라미터에 특수문자가 있을 때 encodeURIComponent 를 사용하면 되겠다 ~

 

URL 인코딩이란 URL 에서 URL로 사용할 수 없는 문자 혹은 URL 로 사용할 수 있지만 의미가 왜곡 될 수 있는 문자들을 

"%XX" 형태로 변환하는 것을 말한다. 

XX는 16진수 값이다. 그리고 URL 디코딩이란 변환된 URL 을 원래 형태로 되돌리는 것을 말한다. 

 

왜 변환 해 줘야 할까?

인터넷을 통해 전송할 수 있는 문자는 오로지 아스키 문자 라서 .

아스키 문자가 아닌 문자는 변환 해 주어야함 

한글 -> 아스키 문자 변화은 UTF-8 규칙을 따른다. 

 

아스키더라도 예약된 의미를 가지고있는 문자의 경우, 그 문자 자체의 의미를 전달하고 싶은 경우에는 이스케이프 처리가 필요하다. 

/ , & , = 들은 아스키 문자이지만 URL 내에서 특별한 의미를 지니고 있다. 그래서 이 문자들을 문자 그대로 전달하고 싶다면 이스케이프 처리가 필요하다

 

URL 은 공백문자가 허용되지 않는다 !! 공백은 %20 혹은 +로 인코딩 된다고 한다.

 

 

 

 

참조 

 

https://steady-snail.tistory.com/111

 

[웹 프로그래밍] GET 방식으로 query string 넘길 때 특수문자 사라짐 현상

웹에서 GET방식으로 어떤 값을 넘겨줄 때 간혹 제대로 나오지 않는 문자가 있습니다. 바로 특수문자중에 +와 &인데 GET방식으로 하면 Query String으로 URL의 뒤에 '?'문자와 함께 같이 붙어져서 URL을

steady-snail.tistory.com

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

 

encodeURIComponent() - JavaScript | MDN

encodeURIComponent() 함수는 URI의 특정한 문자를 UTF-8로 인코딩해 하나, 둘, 셋, 혹은 네 개의 연속된 이스케이프 문자로 나타냅니다. (두 개의 대리 문자로 이루어진 문자만 이스케이프 문자 네 개로

developer.mozilla.org

https://it-eldorado.tistory.com/61

 

[문자열 인코딩] ASCII, ANSI, UTF-8, UTF-16 등

이번 포스팅에서는 문자열을 바이트열로 인코딩하는 방식에 대해 알아볼 것이다. 바이트열을 문자열로 인코딩하는 방식(ex. Base 64)이 아니므로 방향성에 주의하자. 문자열 인코딩 방식에는 여러

it-eldorado.tistory.com

https://it-eldorado.tistory.com/143

 

[Web] URL 인코딩/디코딩 (URL Encoding/Decoding)

이번 포스팅에서는 URL의 인코딩/디코딩에 대해 간단히 알아볼 것이다. 그런데 이것을 이해하려면 먼저 문자열 인코딩에 대한 배경지식이 있어야 한다. 만약 ASCII, UTF-8의 개념을 정확히 알고 있

it-eldorado.tistory.com

 

 

+) 헷갈렸던 개념 정리 

Query string 쿼리스트링이란?

URL 에서 물음표 다음에 오는 것들이 쿼리 스트링

 

/profiles/velopert 

이런식으로 값을 전달하는건 파라미터 

댓글