내 응용 프로그램에서 하이퍼 링크가있는 HTML 전자 메일을 보냅니다. 사용자는 메일 클라이언트의 링크를 클릭 할 수 있어야하고 브라우저가 페이지를 엽니 다. 쉬운 ... 나는 생각했다.HTML 메일의 URL 쿼리 매개 변수 인코딩
이제 링크에는 쿼리 매개 변수에 특수 문자가 포함됩니다. 예 : 두 번째 쿼리 PARAM 값은 id=1234/pid=1000
하고 결과 java.net.URLEncoder.encode()
D의 URL은
http://example.com/path/?key1=value1&key2=id%3D1234%2Fpid%3D1000
이되고 그리고 이것은 HTML 메일에 포함됩니다 것입니다 :
<html ...
<head>
<meta http-equiv=Content-Type content="text/html; charset=unicode">
...
<body lang=EN-US ...
<a href="http://example.com/path/?key1=value1&key2=id%3D1234%2Fpid%3D1000">link text</a>
...
는 (적어도이 볼 수 있습니다 수신 클라이언트의 원시 메일 내용).
http://example.com/path/?key1=value1&key2=id%253D1234%252Fpid%253D1000
및 링크가 더 이상 작동하지 않습니다
문제는 링크를 클릭하면 브라우저가 열리지 만 쿼리 PARAMS 이중 인코딩되는 것입니다. 재미있는 점은 링크가 복사/붙여 넣기가 브라우저에 추가 된 경우 인코딩이 생략된다는 것입니다 (예상대로). 링크를 마우스로 가리키면 URL이 디코드되어 표시됩니다. http://example.com/path/?key1=value1&key2=id=1234/pid=1000
(Outlook 및 Thundbird에서 테스트 한 경우 모두 동일한 동작을 나타냄).
제 질문은 무엇이 잘못 되었습니까?
- 내가 처음 인코딩 한 것이므로 건너 뛰어야합니까?
- 내가 처음 인코딩 한 것이고 잘못하고있는 것입니까?
- 메일 클라이언트가 비난하고 있습니까?
URL 인코딩의 작동 방식 및 사용 사례에서 어떤 인코딩이 아닌지에 대한 많은 정보를 찾을 수 있습니다. 감사합니다. .