독일어 키보드에서 사용 가능한 모든 문자를 URL 매개 변수로 사용하여 웹 사이트 (apache)를 요청하여 테스트했습니다.
http://example.com/?^1234567890ß´qwertzuiopü+asdfghjklöä#<yxcvbnm,.-°!"§$%&/()=? `QWERTZUIOPÜ*ASDFGHJKLÖÄ\'>YXCVBNM;:_²³{[]}\|µ@€~
이들은 인코딩되지 않았습니다 :
^0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.-!/()=?`*;:_{}[]\|~
다음에 인코딩되지 않음 urlencode():
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_
다음에 인코딩되지 않음 rawurlencode():
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~
참고 : RFC 1738 때문에 PHP 5.3.0 이전에 rawurlencode()인코딩 ~되었습니다 . 그러나 이것은 RFC 3986 으로 대체 되었으므로 안전하게 사용할 수 있습니다. 그러나 RFC 3986에 언급되지 않았기 때문에 예를 들어 인코딩 된 이유를 이해하지 못합니다 .{}rawurlencode()
내가 만든 추가 테스트는 메일 텍스트의 자동 링크에 관한 것입니다. Mozilla Thunderbird, aol.com, outlook.com, gmail.com, gmx.de 및 yahoo.de를 테스트했으며 다음 문자가 포함 된 URL을 완전히 링크했습니다.
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~+#,%&=*;:@
물론 ?이 또한 연결되었지만 한 번만 사용 된 경우에만 연결됩니다.
어떤 사람들은 이제 rawurlencode()문자 만 사용하라고 제안 하지만 누군가이 웹 사이트를 여는 데 문제가 있다고 들었습니까?
별표
http://wayback.archive.org/web/*/http://google.com
콜론
https://ko.wikipedia.org/wiki/Wikipedia : 소개
플러스
https://plus.google.com/+google
서명 할 때 콜론, 쉼표 및 느낌표
https : //www.google.com/maps/place/USA/@36.2218457, ...
이 때문에 이러한 문자는 문제없이 인코딩없이 사용할 수 있어야합니다. 물론 당신은 &;같은 인코딩 시퀀스 때문에 사용해서는 안됩니다 &. %일반적으로 문자를 인코딩하는 데 사용되는 것과 동일한 이유가 유효합니다 . 그리고 =매개 변수 이름에 값을 할당합니다.
마지막으로 인코딩되지 않은 다음을 사용하는 것이 좋습니다.
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_~!+,*:@
그러나 무작위로 생성 된 URL이 .!필요한 경우을 사용하지 않아야합니다. URL이 문장의 끝을 표시하고 일부 메일 앱은 URL의 마지막 문자를 자동 링크하지 않기 때문입니다. 예:
Visit http://example.com/foo=bar! !
!*'();:@&=+$,/?#[]되거나 예약되지 않은A-Za-z0-9_.~-문자 (또는%백분율 인코딩의 일부로 백분율 문자 )