Modifique la contraseña del usuario a través de jdbc. Problemas con pases que contienen signos de interrogación

Tengo un problema al modificar la contraseña de un usuario cuando la contraseña contiene un signo de interrogación char. Hasta ahora no encuentro este problema con ningún otro personaje, parece específico para el personaje con signo de interrogación.

Si modifico la contraseña de un usuario en sqlplus usando el siguiente sql:
Alter user Stephen identifed by "NewPassword?" REPLACE "OldPassword";
Luego cambia el pase con éxito y puedo iniciar sesión usando el nuevo pase '¿Nueva contraseña?'.

Sin embargo, si ejecuto el mismo SQL a través de jdbc:
final String query = "ALTER user Stephen identified by \"NewPassword?\" REPLACE \"OldPassword\"";<br>stmt.executeUpdate(query);
Entonces no puedo iniciar sesión con el pase 'NewPassword?'.

Verificar los códigos hash para la contraseña cuando se ingresa a través de sqlplus y jdbc muestra que son diferentes. De alguna manera, cuando ejecuto la declaración en jdbc, está ingresando algo diferente a 'NewPassword?'.

Parece que no tengo ningún problema con las siguientes contraseñas: NewPassword, NewPassword \, NewPassword '. Simplemente parece ser el signo de interrogación que está causando problemas.
La depuración muestra que el punto de código (dec) es 63 para el signo de interrogación, por lo que no parece que se haya cambiado a mitad de camino.

¿Alguien tiene alguna idea de lo que podría estar causando este comportamiento? Estoy perdido ahora, estoy considerando evitar pases con signos de interrogación para evitar este problema por ahora.

Respuestas a la pregunta(2)

Su respuesta a la pregunta