А то я тут увидел один..
public class urlcoder {
private static String replace (String original, String search, String replaceWith)
{
while (original.indexOf(search)!=-1)
{
int start = original.indexOf(search);
int end = start + search.length();
original = original.substring(0, start)+replaceWith+original.substring(end);
}
return original;
}
public static String encode(String original)
{
for (int i=0; i<chars.length; i++)
{
while(original.indexOf(chars[i])!=-1)
{
original = replace(original,chars[i],urls[i]);
}
}
return original;
}
public static String decode(String original)
{
for (int i=0; i<urls.length; i++)
{
while(original.indexOf(urls[i])!=-1)
{
original = replace(original,urls[i],chars[i]);
}
}
return original;
}
private static String[] urls =
{
"%D0%90", "%D0%91", "%D0%92", "%D0%93",
"%D0%94", "%D0%95", "%D0%81", "%D0%96",
"%D0%97", "%D0%98", "%D0%99", "%D0%9A",
"%D0%9B", "%D0%9C", "%D0%9D", "%D0%9E",
"%D0%9F", "%D0%A0", "%D0%A1", "%D0%A2",
"%D0%A3", "%D0%A4", "%D0%A5", "%D0%A6",
"%D0%A7", "%D0%A8", "%D0%A9", "%D0%AA",
"%D0%AB", "%D0%AC", "%D0%AD", "%D0%AE",
"%D0%AF", "%D0%B0", "%D0%B1", "%D0%B2",
"%D0%B3", "%D0%B4", "%D0%B5", "%D1%91",
"%D0%B6", "%D0%B7", "%D0%B8", "%D0%B9",
"%D0%BA", "%D0%BB", "%D0%BC", "%D0%BD",
"%D0%BE", "%D0%BF", "%D1%80", "%D1%81",
"%D1%82", "%D1%83", "%D1%84", "%D1%85",
"%D1%86", "%D1%87", "%D1%88", "%D1%89",
"%D1%8A", "%D1%8B", "%D1%8C", "%D1%8D",
"%D1%8E", "%D1%8F", "%20"
};
private static String[] chars =
{
"А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж",
"З", "И", "Й", "К", "Л", "М", "Н", "О",
"П", "Р", "С", "Т", "У", "Ф", "Х", "Ц",
"Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю",
"Я", "а", "б", "в", "г", "д", "е", "ё",
"ж", "з", "и", "й", "к", "л", "м", "н",
"о", "п", "р", "с", "т", "у", "ф", "х",
"ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э",
"ю", "я", " "
};
}