Altere a senha do usuário via jdbc. Problemas com passes contendo pontos de interrogação

Tenho um problema ao alterar a senha de um usuário quando a senha contém um caractere de ponto de interrogação. Até agora, não encontrei esse problema com nenhum outro caractere, parece específico ao ponto de interrogação char.

Se eu alterar uma senha de usuário no sqlplus usando o seguinte sql:
Alter user Stephen identifed by "NewPassword?" REPLACE "OldPassword";
Em seguida, ele altera o passe com êxito e posso fazer login usando o novo passe 'NewPassword?'.

No entanto, se eu executar o mesmo SQL via jdbc:
final String query = "ALTER user Stephen identified by \"NewPassword?\" REPLACE \"OldPassword\"";<br>stmt.executeUpdate(query);
Não consigo fazer login usando o passe 'NewPassword?'.

A verificação dos códigos hash da senha quando inserida via sqlplus e jdbc mostra que eles são diferentes. De alguma forma, quando executo a instrução no jdbc, ela está inserindo algo diferente de 'NewPassword?'.

Parece que não tenho problemas com as seguintes senhas: NewPassword, NewPassword \, NewPassword '. Apenas parece ser o ponto de interrogação que está causando problemas.
A depuração mostra que o ponto de código (dec) é 63 para o ponto de interrogação, para que não pareça que está sendo alterado no meio do caminho.

Alguém tem alguma idéia do que poderia estar causando esse comportamento? Estou com uma perda no momento, estou pensando em evitar passes com pontos de interrogação para contornar esse problema por enquanto.