/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// declare sting with "%25+ " inside
String userB
= "AAA%25+BBB@DDD.COM" ; System .
out .
println ( "plain userB: " + userB
) ; System .
out .
println ( "URL-encoded userB: " + java.
net .
URLEncoder .
encode ( userB,
"UTF8" ) ) ; System .
out .
println ( "URL-decoded userB: " + java.
net .
URLDecoder .
decode ( userB,
"UTF8" ) ) ;
// declare sting with "% " inside
String userA
= "AAA% BBB@DDD.COM" ; System .
out .
println ( "plain userA: " + userA
) ; System .
out .
println ( "URL-encoded userA: " + java.
net .
URLEncoder .
encode ( userA,
"UTF8" ) ) ; // DECODING userA raises an runtime-error,
// because percent-sign must be followed by a 2-digit number to be valid decodable
System .
out .
println ( "URL-decoded userA: " + java.
net .
URLDecoder .
decode ( userA,
"UTF8" ) ) ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIGRlY2xhcmUgc3Rpbmcgd2l0aCAiJTI1KyAiIGluc2lkZQoJCVN0cmluZyB1c2VyQiA9ICJBQUElMjUrQkJCQERERC5DT00iOwoJCVN5c3RlbS5vdXQucHJpbnRsbigicGxhaW4gdXNlckI6ICIgK3VzZXJCKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIlVSTC1lbmNvZGVkIHVzZXJCOiAiICsgamF2YS5uZXQuVVJMRW5jb2Rlci5lbmNvZGUodXNlckIsICJVVEY4IikgKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIlVSTC1kZWNvZGVkIHVzZXJCOiAiICsgamF2YS5uZXQuVVJMRGVjb2Rlci5kZWNvZGUodXNlckIsICJVVEY4IikgKTsKCgkJLy8gZGVjbGFyZSBzdGluZyB3aXRoICIlICIgaW5zaWRlCgkJU3RyaW5nIHVzZXJBID0gIkFBQSUgQkJCQERERC5DT00iOwoJCVN5c3RlbS5vdXQucHJpbnRsbigicGxhaW4gdXNlckE6ICIgKyB1c2VyQSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJVUkwtZW5jb2RlZCB1c2VyQTogIiArIGphdmEubmV0LlVSTEVuY29kZXIuZW5jb2RlKHVzZXJBLCAiVVRGOCIpICk7CgkJLy8gREVDT0RJTkcgdXNlckEgcmFpc2VzIGFuIHJ1bnRpbWUtZXJyb3IsIAoJCS8vIGJlY2F1c2UgcGVyY2VudC1zaWduIG11c3QgYmUgZm9sbG93ZWQgYnkgYSAyLWRpZ2l0IG51bWJlciB0byBiZSB2YWxpZCBkZWNvZGFibGUKCQlTeXN0ZW0ub3V0LnByaW50bG4oIlVSTC1kZWNvZGVkIHVzZXJBOiAiICsgamF2YS5uZXQuVVJMRGVjb2Rlci5kZWNvZGUodXNlckEsICJVVEY4IikgKTsKCgl9Cn0=