Этот код использует WideCharToMultiByte
(я предполагаю, что вы используете Windows):
unsigned short wide_str[3] = {0x20ac, 0x20ab, 0x20ac};
int utf8_size = WideCharToMultiByte(CP_UTF8, 0, wide_str, 3, NULL, 0, NULL, NULL) + 1;
char* utf8_str = calloc(utf8_size);
WideCharToMultiByte(CP_UTF8, 0, wide_str, 3, utf8_str, utf8_size, NULL, NULL);
Вам нужно вызвать его дважды: первый раз, чтобы получить номер вывода байты и второй раз, чтобы фактически преобразовать его. Если вы знаете размер выходного буфера, вы можете пропустить первый вызов. Или вы можете просто выделить буфер 2x больше, чем оригинал + 1 байт (для вашего случая это означает 12 + 1 байт) - этого должно быть достаточно.
Ваш импорт Param
неверен. Вместо этого используйте org.springframework.data.repository.query.Param
. Класс, который вы импортировали, не является аннотацией, поэтому ошибка.