这是我的连接网址:
jdbc:mysql://mydbhost:3306/mydatabase?user=username&password=%u16*!ypK@WrUQbr
当我打电话
DriverManager.getConnection()
使用当前网址我捕捉异常:
ava.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "u1"
如果连接网址不包含%,则一切正常。
我找到了一些有关此问题的信息,建议您进行下一次转换:
replaceAll("%(?![0-9a-fA-F]{2})", "%25")
通过此转换,我有错误:
Access denied for user(incorrect password)
有人可以帮助正确转换网址吗?
答案 0 :(得分:4)
尝试使用以下字符串,其中密码中的所有保留字符都替换为适当的百分比编码值:
% : %25
* : %2A
! : %21
@ : %40
"jdbc:mysql://mydbhost:3306/mydatabase?user=username&password=%25u16%2A%21ypK%40WrUQbr"
有关百分比编码Wikipedia
的详细信息答案 1 :(得分:0)
我曾尝试过" Carlos Heuberger"推荐的, call getConnection(String url,String user,String password)
在这种风格中它起作用,从我的视野看起来更清晰,而不是构建一个包含所有参数的巨大URL