問題提出: 熟悉mongodb的小夥伴們都知道,mongodb提供使用uri來訪問mongodb中的某個數據庫。mongodb uri中包含了用戶名username、密碼password、主機ip、端口號port以及數據庫名dbname信息,且這些信息之間通常使用:或者@或者/來分隔。mongodb uri的一般格式爲: String uri ="mongodb://username:[email protected]:27017/dbname"; 顯而易見,如果username或者password中包含@和:這兩個特殊字符的話(比如username爲ab@c,password爲al:ex),程序將無法分辨真正的username和password。從而導致程序無法正常訪問mongodb。 解決方案: 對username和password中包含的@和:進行url編碼,@的url編碼爲%40,:的編碼爲%3a。(具體可以使用urlencode在線工具驗證,網址:http://tool.chinaz.com/Tools/urlencode.aspx ) 因此對於“username爲ab@c,password爲al:ex”這種情況,uri應該改爲如下: String uri ="mongodb://ab%40c:al%[email protected]:27017/dbname"; 注意:此處的數據庫名不可缺少,否則訪問可能報錯,可以參考:https://www.jianshu.com/p/7657a275c422。