Наконец-то удалось решить эту проблему, которая меня когда-то мучила. Sonarqube выполняет проверку, чтобы убедиться, что база данных поддерживает кодировку UTF8:
private void expectUtf8(Connection connection) throws SQLException {
String charset = this.getSqlExecutor().selectSingleString(connection, "select value from nls_database_parameters where parameter='NLS_CHARACTERSET'");
if (!StringUtils.containsIgnoreCase(charset, "utf8")) {
throw MessageException.of(String.format("Oracle NLS_CHARACTERSET does not support UTF8: %s", charset));
}
}
Если вы видите ошибку, показанную в вопросе, запустите этот запрос в вашей базе данных: **select value from nls_database_parameters where parameter='NLS_CHARACTERSET'**
, чтобы узнать, какой набор символов есть в вашей базе данных.
Значение, полученное предыдущим запросом, используется для проверки набора символов. В моем конкретном случае результат был WE8MSWIN1252, и именно поэтому я получил эту ошибку.
Итак, установите NLS_CHARACTERSET в AL32UTF8, чтобы устранить проблему.
Надеюсь, это поможет кому-то там.