2013-06-20 50 views
0

Хорошо, я стараюсь держать это коротким. У меня есть веб-сайт Java и база данных MySQL. Все использует кодировку UTF-8. Проблема в том, что если я попытаюсь вставить литовские буквы в базу данных, все буквы типа «ą č ę ė į ų ū» преобразуются в вопросительные знаки.Java Литовский кодировка символов

Insert code: 
public static boolean addUser(UserEntity userEntity) { 
    Connection con = getDataBaseConnection(); 
    PreparedStatement statement = null; 
    try { 
     if (userEntity.isIsActive()) { 
      booleanInt = 1; 
     } else { 
      booleanInt = 0; 
     } 
     if (con != null && !con.isClosed()) { 
      statement = con.prepareStatement("INSERT INTO users (login," 
        + " firstName," 
        + " lastName," 
        + " personalId," 
        + " isActive," 
        + " password)" 
        + "VALUES(?,?,?,?,?,?)"); 
      statement.setString(1, userEntity.getLogin()); 
      statement.setString(2, userEntity.getFirstName()); 
      statement.setString(3, userEntity.getLastName()); 
      statement.setString(4, userEntity.getPersonalId()); 
      statement.setInt(5, booleanInt); 
      statement.setString(6, userEntity.getPassword()); 
      System.out.println(statement.toString()); 
      //statement.executeUpdate(); 
      return statement.execute(); 
     } 
    } catch (Exception ex) { 
     System.out.println(ex); 
    } finally { 
     closeConnection(con); 
     return false; 
    } 

Если мы печатаем для userEntity.getLogin, он распечатывает все с буквами, как должно быть. Скажем, его Мажейкяй. Если мы распечатаем подготовленный оператор SQL, он будет заменен. Java настроена на работу с UTF-8, GlassFish, базой данных.

+0

Является ли таблица базы данных/столбцом, используя UTF8? Это похоже на дубликат: http://stackoverflow.com/questions/3828818/java-preparedstatement-utf-8-character-problem –

+0

Возможный дубликат [Java-литовских букв] (http://stackoverflow.com/questions/ 7222475/Java-литовско-буквы) – Raedwald

ответ

0

Попробуйте создать соединение, как это:

con = DriverManager.getConnection("jdbc:mysql:///dbname?useUnicode=true&characterEncoding=utf-8", "user", "pass"); 
0

Как вы читаете данные, которые вы вставили?

Возможно, что консоль, которую вы печатаете, не поддерживает набор символов UTF-8.

Смежные вопросы