text: Title: Cannot connect SQL which SQL password has '%'
  Body: # Expected Behavior
  
  Hi, I want to use flask-sqlalchemy to connect my SQL database, but I cannot connect to SQL， because the SQL database's password is like "qU%d6".
  It quite strange because I can connect to SQL normally using a password like "password".
  Changing the SQL password may solve the problem, but this bug should be fixed too I think.
  
  ```python
  DIALECT = 'mysql'
  DRIVER = 'mysqldb'
  USERNAME = 'xxx'
  PASSWORD = 'qU%d6'
  HOST = 'xxx'
  PORT = 'xxx'
  DATABASE = 'xxx'
  
  SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, 
      USERNAME, PASSWORD, HOST, PORT, DATABASE)
  ```
  
  ### Actual Behavior
  
  The error is: UnicodeDecodeError: 'ascii' codec can't decode byte 0xd6 in position 3: ordinal not in range(128), so I cannot connect to the SQL database.
  I have tried:
  - use u'qU%d6'
  - use r'qU%d6'
  - change % to %%
  All failed!
  
  ```pytb
  Traceback (most recent call last):
    File "sqldemo.py", line 37, in <module>
      db.create_all()    # 真正建立模型到数据库
    File "/usr/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 1039, in create_all
      self._execute_for_all_tables(app, bind, 'create_all')
    File "/usr/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 1031, in _execute_for_all_tables
      op(bind=self.get_engine(app, bind), **extra)
    File "/usr/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 962, in get_engine
      return connector.get_engine()
    File "/usr/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 556, in get_engine
      self._engine = rv = self._sa.create_engine(sa_url, options)
    File "/usr/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 972, in create_engine
      return sqlalchemy.create_engine(sa_url, **engine_opts)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 500, in create_engine
      return strategy.create(*args, **kwargs)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 98, in create
      (cargs, cparams) = dialect.create_connect_args(u)
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 184, in create_connect_args
      database="db", username="user", password="passwd"
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/url.py", line 216, in translate_connect_args
      if name is not None and getattr(self, sname, False):
    File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/url.py", line 134, in password
      return util.text_type(self.password_original)
  UnicodeDecodeError: 'ascii' codec can't decode byte 0xd6 in position 3: ordinal not in range(128)
  ```
  
  ### Environment
  
  * Python version:2.7
  * Flask-SQLAlchemy version:2.4.4
  * SQLAlchemy version:1.3.18
  