public static String fixURL(String URI) {
		//System.out.println("\tFIX URL Getted URI: "+URI);
		if (URI.length() >= 7 && URI.indexOf("http://", 0) == 0)
			URI = URI.substring(7);
		String s = URI;
		int startIndex = s.indexOf('#');
		if (startIndex >= 0) {
			StringBuilder sb = new StringBuilder(s);
			s = sb.delete(startIndex, sb.length()).toString();
		}

		// Делаем URL более однозначным
		// -Коды символов %xX в %XX (верхний регист)
		s = replaceToUpCase(s, Pattern.compile("%[A-Fa-f\\d]{2}"));
		// -Символ ' " ' в %22
		s = s.replace("\"", "%22");
		// -Символ ' < ' в %3C
		s = s.replace("<", "%3C");
		// -Символ ' > ' в %3E
		s = s.replace(">", "%3E");
		// -Символ ' ` ' в %60
		s = s.replace("`", "%60");

		int num1 = s.indexOf('?');
		s = (num1 < 0) ? s.replace("^", "%5E") : s.substring(0, num1).replace(
				"^", "%5E")
				+ s.substring(num1);
		s = escape_unicode_rus(s);
		if (s.indexOf('/') < 0 & s.length() > 0)
			s = s + '/';
		int num2 = s.indexOf('/');
		if (num2 >= 0)
			s = Pattern.compile("(:(80)?$)?").matcher(s.substring(0, num2))
					.replaceAll("").toLowerCase()
					+ s.substring(num2);

		int num3 = s.indexOf('/');
		char[] Chars = s.toCharArray();

		for (int index = 0; index < num3; ++index) {
			if (((int) Chars[index] < 48 | (int) Chars[index] > 57)
					& ((int) Chars[index] < 97 | (int) Chars[index] > 122)
					& ((int) Chars[index] != 45 & (int) Chars[index] != 46 & (int) Chars[index] != 58)) {
				s = "НЕПРАВИЛЬНЫЙ ХОСТ";
				break;
			}
		}
		//System.out.println("Transformed URI: "+s);
		return s;
	}