Отображать специальные символы, используя System.out.println

У меня возникли проблемы с отправкой или отображением текста со специальными символами из моего веб-сервиса в мою базу данных. На моем затмении я установил кодировку символов в UTF-8, но он все еще не позволяет мне отображать символы. Например, простая печать, например, код ниже

String test ="привет"; 
System.out.println(test);

ИЛИ

String test ="привет";
String query = "insert into communication (`test`) VALUES ('"+ test +"');
PreparedStatement preparedStmt1 = con.prepareStatement(query);
preparedStmt1.executeUpdate();

Результат на консоли, и если я отправлю это в свою базу данных, это??????. Как я могу правильно отобразить это на консоли и, надеюсь, в базе данных

Ответ 1

Да, его XXI. века, и мы все еще боремся с вещами, такими как кодирование символов...

Мое первое предположение заключается в том, что либо:

  • Ваша кодировка исходного файла может быть неправильной (вы используете инструменты сборки, такие как Maven? Возможно, потребуется установить исходную кодировку),
  • Ваша консольная кодировка может быть неправильной (вы находитесь под Windows? По умолчанию консоль командной строки по умолчанию не UTF, ее локально зависимая, но с небольшим воспроизведением в реестре вы можете установить ее кодировку).
  • Ваша кодировка БД может быть неправильной (что такое кодировка таблицы, можете ли вы это проверить?)

Ответ 2

Если вы используете Eclipse, то

  • щелкните правой кнопкой мыши на проекте.
  • Перейдите в раздел Свойства
  • Выберите UTF-8 в "Текст Кодировка файлов "

enter image description here

Ответ 3

Посмотрите, работает ли это.

    PrintStream out = new PrintStream(System.out, true, "UTF-8");
    out.println(test);

Для хранения в БД используйте следующую команду для явного кодирования строки в UTF-8

String newString = new String(test.getBytes(), "UTF8");

Ответ 4

Возможно, вам нужно сначала декодировать строку символов в ISO-8859, а затем закодировать ее в UTF-8