>  기사  >  웹 프론트엔드  >  JS의 encodeURI(url)에서 잘못된 문자를 방지하는 방법은 무엇입니까?

JS의 encodeURI(url)에서 잘못된 문자를 방지하는 방법은 무엇입니까?

php中世界最好的语言
php中世界最好的语言원래의
2018-03-09 10:52:422657검색

이번에는 JS에서 문자 깨짐 없이 URI(url)를 인코딩하는 방법을 알려드리겠습니다. , JS에서 encodeURI(url)을 사용할 때 주의사항은 무엇인가요? 다음은 실제 사례입니다. 살펴보겠습니다.

일반적으로 encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue);
수신 시 직접 String paramValue = request.getParameter(paramName); // 컨테이너가 자동으로 디코딩됩니다.

우리는 encodeURIComponent가 사용됨 UTF-8 인코딩 규칙에 따라 컴파일됩니다.
컨테이너가 request.getParameter(paramName)에 따라 UTF-8도 해석하는 경우에는 두 번째 encodeURIComponent(...)를 수행할 필요가 없습니다. 클라이언트

컨테이너가 UTF-8에 따라 request.getParameter(paramName)를 디코딩하지 않으면 잘못된 코드라는 결과 하나만 남게 됩니다.
디코딩하기 위해 컨테이너가 사용하는 인코딩은 request.setCharacterEncoding(* **) 또는 서버 프로그램 구성입니다.

jsp 프로그램을 사용하는 경우 request.setCharacterEncoding("UTF-8")을 사용하여 제출된 매개변수를 디코딩할 때 컨테이너가 UTF-8을 사용하도록 서버 구성을 수정할 수 있습니다. GET.

클라이언트 제출 전에 보조 인코딩이 필요하지 않습니다. 수신 시 request.getParameter(paramName)을 직접

인터넷의 일부 사람들이 클라이언트 측에서 문자열을 두 번 인코딩하도록 제안하는 이유는 무엇입니까?
만약 그렇다면 프로젝트 요구로 인해 제출된 매개변수를 디코딩하기 위해 컨테이너가 사용하는 인코딩 규칙을 지정할 수 없습니다(예: 다른 페이지에서 인코딩되지 않은 매개변수 콘텐츠를 수신해야 하는 경우). (혹은 개발자가 이 다소 복잡한 일로 인해 혼란스러워하고 매개변수 수신 작업을 올바르게 수행하는 방법을 모를 수도 있습니다.)
이때 클라이언트에서 매개변수의 2차 인코딩을 사용하면 "멀티바이트 문자 커밋"이라는 까다로운 질문을 효과적으로 피할 수 있습니다. ".
첫 번째 인코딩으로 인해 매개변수 콘텐츠에 멀티바이트 문자가 포함되지 않고 순수 Ascii 문자열이 됩니다. (여기서 첫 번째 컴파일 결과를 [STR_ENC1]이라고 합니다. [STR_ENC1]에는 멀티바이트 문자가 포함되어 있지 않습니다.)
다시 컴파일한 후 제출하면 컨테이너가 수신 시 자동으로 한 번 디코딩됩니다. 이것을 한 번만 누르면 GBK, UTF-8, ISO-8859-1을 눌러도 [STR_ENC1]을 제대로 얻을 수 있습니다)
그런 다음 프로그램에서 다시 decodeURIComponent를 구현합니다(java.net.URLDecoder(*는 일반적으로 Java에서 사용됨). **, "UTF-8")) 제출하려는 매개변수의 원래 값을 가져옵니다.

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트기타 관련 기사를 주목하세요!

관련 자료:

CSS의 클리어픽스 원리에 대한 간략한 소개

CSS1과 CSS2의 공통 속성

CSS3을 사용하여 로그인 상자를 만드는 방법

위 내용은 JS의 encodeURI(url)에서 잘못된 문자를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.