Looks like the python bitcoinrpc authproxy stuff uses python "urlparse" that chokes on "/" in passwords.

AFAICT (?) it's python that is in the wrong here, but broken httpauth handling is common.

I used base58 encoding for the old code that would provide a suggested rpcpassword when you tried to run the daemon without one.  I think base58 is free of any characters that will screw up url handling... and there are no compatibility issues with just changing what cookieauth uses.

{
    boost::filesystem::path path(GetArg("-rpccookiefile", COOKIEAUTH_FILE));
    if (!path.is_complete()) path = GetDataDir() / path;
    return path;
}
bool GenerateAuthCookie(std::string *cookie_out)
{
    unsigned char rand_pwd[32];
    GetRandBytes(rand_pwd, 32);
    std::string cookie = COOKIEAUTH_USER + ":" + EncodeBase64(&rand_pwd[0],32);
    /** the umask determines what permissions are used to create this file -
     * these are set to 077 in init.cpp unless overridden with -sysperms.
     */
    std::ofstream file;
    boost::filesystem::path filepath = GetAuthCookieFile();
    file.open(filepath.string().c_str());
    if (!file.is_open()) {
        LogPrintf("Unable to open cookie authentication file %s for writing\n", filepath.string());
        return false;
    }
    file << cookie;
    file.close();
    LogPrintf("Generated RPC authentication cookie %s\n", filepath.string());
    if (cookie_out)
        *cookie_out = cookie;
    return true;
}
bool GetAuthCookie(std::string *cookie_out)