Пробовал исправить проблему с кодировками. Итак, я отправил из «Почтальона» запрос из веб-браузера на сервер, где я ищу данные в базе данных по ключам в запросе. Запрос может быть таким:
http://localhost:8080/books.getBooksByGenre/Документальное/0/10
(в браузере). Строка приема сервера, например
http://localhost:8080/books.getBooksByGenre/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5/0/10
затем принимает параметры из url: genreName: 'Документальное' начало: 0 count: 10. Затем эти данные отправляются в dao:
override fun findGenreByName(genreName: String): DatabaseGenre {
return transaction(db) { getGenreByName(genreName) }
}
private fun getGenreByName(genreName: String): DatabaseGenre {
return try {
val foundGenre = GenreEntity.find { Genres.genre eq genreName }.single()
DatabaseGenre(foundGenre.id.value, foundGenre.genre, foundGenre.link)
} catch (e: Exception) {
throw NothingFoundInDatabaseException("no one genre found by '$genreName'")
} catch (e: NoSuchElementException) {
val m = "Duplicates of genre with name '$genreName'"
throw DuplicatedDataInDatabaseException(m)
}
}
В журнале я вижу, что sql-запрос для поиска жанров правильный, но получаю исключение:
java.util.NoSuchElementException: Collection is empty.
Sql-запрос, как я уже сказал, правильный:
SELECT genres.id, genres.genre, genres.link FROM genres WHERE genres.genre = 'Документальное'
Структура таблицы жанров:
genres
id: int(10)
genre: varchar(100)
link: varchar(100
Я попытался выбрать все жанры, и этот запрос выполнил почти правильно. Итак, я решил проверить этот запрос английским словом, и этот запрос правильно выполнился:
SELECT genres.id, genres.genre, genres.link FROM genres WHERE genres.genre = 'simpleGenre'
У меня нет исключений из этого запроса.
Итак, что я сделал не так и как исправить проблему с сопоставлениями?
UPD: как я сказал на github (проблема), я попробовал этот запрос mysql cli, и я получаю правильный ответ.
Кроме того, я попытался декодировать параметры URL (с классом java URLDecoder). Это тоже не помогает.
characterEncoding=utf8
в URL-адресе подключения к MySQL? Как 2_. Еще один полезный параметр -useUnicode=true
. - person madhead   schedule 21.11.2018