 
			
				11.10.2010, 18:04
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.03.2009 
					
					
					
						Сообщений: 148
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				О URLкодировке с помощью encodeURIComponent
			 
			
		
		
		
		Помогите разобраться. 
Начну с малого : 
 
Вот RFC при отправке данных формы говорит, что  нужно '&' кодировать, как & (или как '& ;'), если он встречается среди значений полей, но при формировании GET запроса в MSXML2.XMLHTTP для oXMLHTTP.setRequestHeader 'Content-type', 'application/x-www-form-urlencoded' рекомендуется использовать encodeURIComponent(FieldWithAmp) , где FieldWithAmp - поле содержащее '&' ( encodeURIComponent('&')=='%26' , т.е. не дает encodeURIComponent требуемого в RFC '& ;' )
 
Как это объяснить, как все-таки правильно URL кодировать при GET запросе и 'Content-type', 'application/x-www-form-urlencoded' ?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось kefi, 11.10.2010 в 18:08.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 18:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Особый гость 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.04.2010 
					
					
					
						Сообщений: 4,260
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var string = encodeURIComponent('&'); // "%26"
window.location = 'http://example.com/?string='+string; //example.com/?string=%26
и  тут почитать  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось monolithed, 11.10.2010 в 18:37.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 18:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.03.2009 
					
					
					
						Сообщений: 148
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 2 monolithed> не проясняет что-то - Вы смотрели ли ссылку на RFC по HTML, приведеную в первом посте? Вопрос связан с ней. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 20:18
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Особый гость 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.04.2010 
					
					
					
						Сообщений: 4,260
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Для отправки запроса методом GET используется encodeURIComponent 
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));
Если в коде страницы присутствуют спецсимволы  типа &, то их нужно заменять на & (или как '& ;') или же если данные формы посылаются методом POST и пр.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 20:36
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Пионэр 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.11.2009 
					
					
					
						Сообщений: 1,322
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Не путайте! Url-кодирование - часть стандарта http, сущности (&...   - часть стандарта html. Эти технологии хоть и сопряжены, но не одно и то же.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 21:25
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.03.2009 
					
					
					
						Сообщений: 148
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от monolithed
			 
		
	 | 
 
	
		Для отправки запроса методом GET используется encodeURIComponent 
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));
 
 
Если в коде страницы присутствуют спецсимволы  типа &, то их нужно заменять на & (или как '& ;') или же если данные формы посылаются методом POST и пр.
	 | 
 
	
 
 Так и не понял :  
нужно вместо 
 
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));
использовать
 
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));
?
 
	
 
	| 
		
			Сообщение от subzey
			
		
	 | 
 
	
		Не путайте! Url-кодирование - часть стандарта http, сущности (&...  - часть стандарта html. Эти технологии хоть и сопряжены, но не одно и то же.
	 | 
 
	
 
 Так объясните как не путать -  все же как правильно ? 
Или , Дайте , плз, ссылку, где ясно расписано без монбланов RFC, как все же нужно URL кодировать URL'ы при отправке данных формы методом GET ?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 21:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ну попробуйте и так и так, если не понимаете. Как заработает, так и делайте. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 21:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.06.2009 
					
					
					
						Сообщений: 111
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 w3.org говорит, что для xml и прочих стандарт это & а всё, что кроме это происки M$ 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 21:59
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.03.2009 
					
					
					
						Сообщений: 148
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		2 JAre> Где именно говорит ? ткните пальцем. 
Дело в том, что RFC по HTTP и по HTML при описании URI ссылаются на RFC1738 и новый RFC2396 по URI, где черт ногу сломит, но вот как  
 Спецификация HTML 4.01 интерпретирует URL кодирование :
 Имена ЭУ и значения переводятся в escape-последовательности. Символы пробелов заменяются `+', и затем зарезервированные символы переводятся в escape-последовательности, как описано в [RFC1738], раздел 2.2: 
Неалфавитные символы заменяются `%HH', знаком процента и двумя 16-ричными цифрами, представляющими ASCII-код символа.
и тд ....
 
Т.е.,  скажем, для " И" русской encodeURIComponent дает  %D0%98 - четверка 16-ных символов, а по написанному выше выходит, что должны быть только ДВА шестнадцатиричных символа : "И" ->  %C8
И как это понять ?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.10.2010, 22:28
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Кандидат Javascript-наук 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.06.2009 
					
					
					
						Сообщений: 111
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ну в спеке по xml есть вот, что "The ampersand character (&) and the left angle bracket (<) must not appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings " & " and " < " respectively." 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |