Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

MS SQL Server + JDBC + Русский язый

Сергей Мнацаканян Ученик (99), закрыт 1 год назад
При выполнении запроса вместо русских символов появляются знаки вопроса.
Был написан тестовый код, для проверки методов работы с БД, но при попытке прочитать или записать в БД русские символы, появляются вопросительные знаки.
Пробовал добавлять в url useUnicode=true&characterEncoding=Cp1251 эффекта никакого.

public class OpTradingAgents {
FileInputStream fis;
Properties properties = new Properties();
private String dbLogin;
private String dbPassword;
private String url;

public OpTradingAgents() throws IOException {
try {
fis = new FileInputStream("G:\\Универ\\Диплом\\Program\\diplom\\src\\main\\resources\\config.properties");
properties.load(fis);

String dbType = properties.getProperty("dbType");
String dbIp = properties.getProperty("dbIp");
String dbPort = properties.getProperty("dbPort");
String dbName = properties.getProperty("dbName");
dbLogin = properties.getProperty("dbLogin");
dbPassword = properties.getProperty("dbPassword");
url = "jdbc:" + dbType + "://" + dbIp + ":" + dbPort + ";database=" + dbName +";useUnicode=true&characterEncoding=Cp1251";
} catch (Exception e) {
e.printStackTrace();
} finally {
fis.close();
}
}
public ArrayList getByLogin(String impLogin) {
ArrayList tradingAgents = new ArrayList<>();
String query = "SELECT * FROM TradingAgents WHERE login=?";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
try (Connection con = DriverManager.getConnection(url, dbLogin, dbPassword)) {
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, impLogin);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int workerCode = rs.getInt(1);
String pasportId = rs.getString(2);
String name = rs.getString(3);
String surname = rs.getString(4);
String patronymic = rs.getString(5);
String login = rs.getString(6);
String password = rs.getString(7);
String phoneNumber = rs.getString(8);
String eMail = rs.getString(9);
TradingAgents tradingAgent = new TradingAgents(workerCode, pasportId, name, surname, patronymic, login, password, phoneNumber, eMail);
tradingAgents.add(tradingAgent);
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
return tradingAgents;
}
}
Лучший ответ
Пользователь удален Высший разум (616773) 2 года назад
А надо - UTF-8.
Сергей МнацаканянУченик (99) 2 года назад
Эффект тот же, к сожалению.
Сергей Мнацаканян, это у тебя в консоли проблема, попробуй в файл вывод делать. А файл NotePad++ открывай и смотри кодировку символов.
Остальные ответы
Похожие вопросы