Как проанализировать URI как это в Java

Включенный в ASP.NET 3,5 SP1:

  • customErrors теперь поддерживает атрибут "redirectMode" со значением "ResponseRewrite". Выставочная ошибочная страница, не изменяя URL.
  • тег form теперь распознает атрибут действия. Большой для того, когда Вы используете URL, переписывая
8
задан Frank 1 December 2009 в 17:12
поделиться

4 ответа

Канальный символ «считается небезопасным» для использования в URL-адресах. Вы можете исправить это, заменив | с его закодированным шестнадцатеричным эквивалентом, который будет "% 7C"

. Однако замена отдельных символов в URL-адресе - хрупкое решение, которое не работает очень хорошо, если учесть, что в любом заданном URL-адресе потенциально может быть довольно много количество разных символов, которые, возможно, потребуется заменить. Вы уже заменяете пробелы, символы вставки и вертикальные линии .... но как насчет скобок, знаков ударения и кавычек? Или вопросительные знаки и амперсанды, которые могут быть или не быть действительными частями URL-адреса, в зависимости от того, как они используются?

Таким образом, лучшим решением было бы использовать средства языка для кодирования URL-адресов, а не делать это вручную. В случае Java используйте URLEncoder ,

14
ответ дан 3 November 2019 в 12:27
поделиться

Не лучше ли использовать URLEncoder , чем выборочно кодировать что-то?

7
ответ дан 3 November 2019 в 12:27
поделиться

Вы должны использовать java.net.URLEncoder для URL-кодирования запроса с помощью UTF-8 . Для этого не обязательно использовать регулярное выражение. Вы же не хотите, чтобы регулярное выражение покрывало все эти тысячи китайских символов, не так ли? ;)

String query = URLEncoder.encode("zh-CN|en|你", "UTF-8");
String url = "http://translate.google.com/#" + query;
Desktop.getDesktop().browse(new URI(url));    
6
ответ дан 3 November 2019 в 12:27
поделиться

Хорошо, я нашел, как это сделать, вот так:

try { Desktop.getDesktop().browse(new URI(File_Or_Url.replace(" ","%20").replace("^","%5E").replace("|","%7C"))); }
catch (Exception e) { e.printStackTrace(); }
-1
ответ дан 3 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: