æøåÆØÅ-problem (database-udtræk)
Jeg har en lille simpel database-applikation afviklet i konsol under windows2000. Databasen er en dansk MS Access 2000. Se koden nedenfor. Det her er lidt tricky.Når jeg benytter ("C:\Program Files\j2sdk1.4.0\bin\java.exe" -cp C:\Java\Telefon -Dfile.encoding=Cp850 telefon) til afvikling så bliver "æøåÆØÅ"-tekst direkte i koden udskrevet rigtigt mens den samme tekst fra databasen ender på skærmen som ukendte tegn.
Når jeg benytter ("C:\Program Files\j2sdk1.4.0\bin\java.exe" -cp C:\Java\Telefon telefon) til afvikling så bliver "æøåÆØÅ"-tekst direkte i koden udskrevet som ukendte tegn og fra databasen er det æ, ø, å og Æ der vises rigtigt mens Ø og Å vises som spørgsmålstegn.
Er der nogen der kan finde den gyldne forklaring?
Er du der, arne_v???
import java.io.*;
import java.net.URL;
import java.sql.*;
class telefon {
static Connection cnnTelefon;
public static void main (String args[]) {
System.out.print("\n");
while (true) {
try {
InputStreamReader objInputStream = new InputStreamReader(System.in, "CP850");
BufferedReader objInputBuffer = new BufferedReader(objInputStream);
System.out.print("æøåÆØÅ Search> ");
System.out.flush();
String strInput;
strInput = objInputBuffer.readLine();
String strURL = "jdbc:odbc:Telefon";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
cnnTelefon = DriverManager.getConnection(strURL);
System.out.print("\n");
printResult(strInput);
}
catch (IOException ex) {
System.out.println(ex.getMessage());
}
catch (SQLException ex) {
System.out.println(ex.getMessage());
}
catch (java.lang.Exception ex) {
ex.printStackTrace();
}
}
}
public static void printResult(String strSearch) {
try {
Statement objStatement = cnnTelefon.createStatement();
String strSQL = "SELECT * FROM tblTelefon WHERE strNavn LIKE '%" + strSearch + "%' OR strOrd LIKE '%" + strSearch + "%'";
ResultSet rstTelefon = objStatement.executeQuery(strSQL);
String strName;
String strTlf;
int intNumOfRows;
intNumOfRows = 0;
while (rstTelefon.next()) {
strName = rstTelefon.getString("strNavn");
strTlf = rstTelefon.getString("strTlfNummer");
String strOut = " " + strName + ": " + strTlf;
try {
System.out.print(new String(strOut.getBytes("CP850")));
}
catch (UnsupportedEncodingException ex) {
System.out.println(ex.getMessage());
}
System.out.print("\n");
intNumOfRows =+ 1;
}
if (intNumOfRows == 0) {
System.out.print(" No rows found" + "\n");
}
System.out.print("\n");
}
catch (SQLException ex) {
System.out.println (ex.getMessage());
}
}
}