У меня есть вопрос, который сводит меня с ума
на моем ноутбуке у меня есть oracle-xe 10.2.0 на Ubuntu
БД Charset: AMERICAN_AMERICA.AL32UTF8
NLS_LANG = AMERICAN_AMERICA.AL32UTF8
public static void main(String[] args) throws Exception {
// Default locale before overwriting is ru_RU
// Locale.setDefault(new Locale("EN"));
//
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
try {
// @machineName:port:SID, userid, password
Statement stmt = conn.createStatement();
try {
ResultSet rset = stmt
.executeQuery("select * from test");
try {
while (rset.next())
System.out.println(rset.getString(1)); // Print col 1
} finally {
try {
rset.close();
} catch (Exception ignore) {
}
}
} finally {
try {
stmt.close();
} catch (Exception ignore) {
}
}
} finally {
try {
conn.close();
} catch (Exception ignore) {
}
}
}
Если я комментирую Locale.setDefault, у меня ORA-12705: невозможно получить доступ к файлам данных NLS или недопустимому исключению, указанному в среде (языковой стандарт по умолчанию в этом случае остается ru_RU), но если я установил языковой стандарт по умолчанию EN, то все в порядке .
Что это может значить? Почему вместо NLS_LANG используется значение Locale.getDefault, как об этом написано в каждой статье?
Спасибо